0
Help us understand the problem. What are the problem?

posted at

updated at

node.js で Google Drive にアクセスする際に認証でハマった

症状

公式のクイックスタートに沿って進める。

しかしエラーが出てうまく行かない。

Error: TypeError: Cannot destructure property 'client_secret' of 'credentials.installed' as it is undefined.

原因

サンプルコードにあるcredentials.jsonをクイックスタートの手順で取得する際に、以下ページに誘導される。

ここで、以下3種類のキーの取得方法が紹介されている。

  • API key
  • OAuth client ID
  • Service account

どうやらクイックスタートはこのうち、 OAuth client ID の取得を前提としたサンプルコードになっているようだった。

また、キーを取得する際にアプリケーションの種類を聞かれるが、「デスクトップアプリ」を選択する必要があるようだった。

image.png

クイックスタートは OAuth が前提になってくるので、ユーザーによる認証などが必要のないものを作ろうとしている場合はサービスアカウントを利用する方が良さそうです。

サービスアカウントによる認証については、こちらです。

基本的に上記リンクの手順に沿えばできると思いますが、以下が注意点です。

  • 環境変数に json のパスを指定しておくと認証はモジュールが勝手にやってくれる。(詳細は上記リンクで)

  • google drive のファイル/フォルダは json 内の client_email のユーザーにアクセス権限がなければ not found になる。(公開している場合は問題ないが、プライベートなファイル/フォルダの場合はアクセス権限を付与する必要がある)

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?