Closed11

Google OAuthからGoogleドライブのスプレッドシートの読み込み

マッケイマッケイ

何をしたい

アプリケーションからOAuthでGoogle認証して、認証されたGoogleアカウントのGoogleドライブからスプレッドシートを読み込む

準備

イメージ

  • 「Google認証」ボタンを押したら、Googleログインに遷移し、認可をしてから元のページにリダイレクト
  • 認可後は、Googleアカウントのドライブからファイルを読み込みできるようにする
マッケイマッケイ

Google ドライブだけでなく、Google Sheets APIもあった
https://keeping.hatenablog.jp/entry/2020/05/30/130803

どっちでもいいけど、なんとなくシートの方が色々めんどくさくなさそう。
共有ドライブのデータを読み込めるようにしたい。

シート以外のデータを読み込ませる場合のバリデーションとかがだるそう。
→シートだけで考える

マッケイマッケイ

invalid_grantエラーが発生

{ error: 'invalid_grant', error_description: 'Bad Request' }

refresh tokenは、最初の承認のみ有効
https://developers.google.com/identity/protocols/oauth2/web-server?hl=ja#creatingclient:~:text=重要な注意事項%3A refresh_token は最初の承認でのみ返されます

認証されたアプリをGoogleアプリから削除して初期化
https://github.com/googleapis/google-api-nodejs-client/issues/750#issuecomment-304521450

上記に合わせて、setCredentialsの記述を追加

  const { tokens } = await oauth2Client.getToken(code);
  oauth2Client.setCredentials(tokens);

https://developers.google.com/identity/protocols/oauth2/web-server?hl=ja#exchange-authorization-code

マッケイマッケイ

新たなエラー発生

{
      error: 'invalid_request',
      error_description: 'Missing parameter: redirect_uri'
}

OAuthクライアントにredirect_uriの設定を明示

google.auth.OAuth2(clientId, clientSecret, redirectUri);
このスクラップは2024/01/24にクローズされました