Nodejsで次のスクリプトを使用して、Googleスプレッドシートからデータを読み取るスクリプトを作成しています。
var url = oauth2Client.generateAuthUrl({
access_type: 'offline',
approval_Prompt: 'force',
scope: [
'https://www.googleapis.com/auth/analytics.readonly',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/spreadsheets'
]
});
global.googleapis = { expiry_date: 0 };
google.options({ auth: oauth2Client });
var sheets = google.sheets('v4');
sheets.spreadsheets.get({ spreadsheetId: 'id'}, function(err, data) {
res.send(err, data);
});
しかし、すべての取得リクエストでこのエラーが発生しています:
Request had insufficient authentication scopes.
Google Developers ConsoleをチェックしてGoogle Drive APIを有効にしましたが、有効になっているので、何ができるのかわかりません。
まず、資格情報ファイルを削除します~/.credentials/sheets.googleapis.com-nodejs-quickstart.json
(設定によります)
Googleスプレッドシートからのセルの読み取りに使用されるスコープ変数を
var SCOPES = [' https://www.googleapis.com/auth/spreadsheets.readonly '];
に
var SCOPES = [' https://www.googleapis.com/auth/spreadsheets '];
スコープは良好に見えます。以前に/Users/yourUserName/.credentials/sheets.googleapis.com-projectName/*
に保存された資格情報を削除してから、アプリケーションを再度実行して新しい資格情報を取得する必要があります。
トークンフォルダーからトークンを削除して、再試行してください。スプレッドシートクイックスタートを実行する前にGoogleドライブクイックスタートを実行しようとした場合、既存のトークンのスプレッドシートへのアクセスが更新されない可能性があります。
スコープを更新したときに同じ問題が発生しました。指示とともに、pythonスクリプトを使用して同じディレクトリの下のtoken.jsonファイルを削除すると、認証スコープの問題はなくなりました。
私の場合、token.pickleファイルはプログラムと同じ作業ディレクトリに作成され、同じディレクトリにcredentials.jsonファイルがあり、token.pickleファイルを削除してからスコープを変更してから実行しましたもう一度、それはあなたのブラウザで再び認証を要求します、それはそれです、それは動作します。
私のコードスニペットは以下のようなもので、ピクルファイルを作成していたので、スコープを変更する前に削除する必要がありました
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server()
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
長い間、資格情報の場所を探していました。フォーラムの多くは、c:\ users\.credentials\google-api ****。jsonの下にあると言っていましたが、どこにも見つかりませんでした。それから、私のプログラムがtoken.pickleファイルをprogram .pyディレクトリーに作成したことがわかりました。これは本質的に信任状ファイルです。