3

GoogleDriveAPIで深刻な問題が発生しています。

ここで私と一緒に耐えてください、説明することがたくさんあります。

私は元々、自分のGoogleアカウントの1つを使用してAPIを機能させていtest@google.comました。簡単にするために、APIを呼び出しましょう。Google Picker UIが機能し、ドライブアカウントのファイルのリストが正しく表示されます。

google-ruby-api-clientAPP_IDに設定し、公式のgemを使用してエンドポイントを使用してDriveAPIに接続するサーバー側のロジックがありdrive.files.getます。次に、このスニペットを使用してファイルのメタデータをダウンロードできます。

require 'google/api_client'

client = Google::APIClient.new

# client ID and secret from Google APIs Console
client.authorization.client_id = "{CLIENT_ID}"
client.authorization.client_secret = "{SECRET}"
client.authorization.redirect_uri = "http://myapp.com/users/auth/gdrive"
# access token stored in database from oauth2 flow
client.authorization.access_token = "TOKEN"

client.authorization.scope = [
  "https://www.googleapis.com/auth/drive.file",
  "https://www.googleapis.com/auth/userinfo.email",
  "https://www.googleapis.com/auth/userinfo.profile"
]
result = client.execute!(
  :api_method => 'drive.files.get',
  :version => 'v2',
  :parameters => { 'fileId' => params[:file_id] })

これを試したtest@google.comアカウントでは、結果にファイルのメタデータが返され、ファイルをダウンロードできます。すべて桃色。

のGoogleアカウントを使用すると問題が発生します。PickerでファイルにアクセスできますがfileId、上記を使用してリクエストがサーバーに送信されると、ファイルが存在しないという404エラーが発生し続けます。また、googleが提供するOAuth 2.0 Playgroundを使用してファイルのメタデータにアクセスしようとしましたが、奇妙なことに、それでもそのエラーが発生しますが、test@google.comアカウントを使用すると同じ404エラーが発生します。

私が本当に考えることができるのは、Googleドライブのすべての詳細を含むバージョンのアプリを一度送信し、Chromeウェブストアからアプリをインストールしたことだけです。ドライブ対応アプリとしてすべての人に表示されていることに気付いた後、すぐに削除し、manifest.jsonファイルを通常の非ドライブ対応状態に戻しました。正しく動作させるには、Chromeウェブストアからアプリをインストールする必要があることを読みましたが、そうではないことも読みました。インストールしたChromeウェブストアアプリはGoogleのクラウドのどこかに保存されているので、特定のアカウントにインストールされたことがわかりますか?または、ウェブストアアプリはローカルにインストールされたばかりですか?私は困惑している。

ここで何が欠けていますか?私は本当に長い間APIにこれほどイライラしていませんでした。助けてください!

4

1 に答える 1

1

答えてくれたAliAfsharに感謝します-解決策(今のところ)は、スコープだけでなく、Googleドライブのスコープ全体を一時的に使用することdrive.fileです。

たとえば、このスコープを使用する代わりに、

https://www.googleapis.com/auth/drive.file

代わりにこれを使用してください:

https://www.googleapis.com/auth/drive
于 2012-07-13T17:56:43.473 に答える