3

複数のアカウントにサインオンしてchanges.listのAPI呼び出しを行うと、画像のサムネイルに404が表示されます。

問題を再現するための完全な手順は、次のとおりです。

  1. 2つのアカウントでサインインします。1つは個人のGmailアカウント、もう1つはGoogleアプリのアカウントです。それぞれUser_gmailとUser_gappsと言います。

  2. ドライブの変更のリストを取得するためにURLを取得するためのAPI呼び出しを行います。

  3. 画像のサムネイルを読み込みます。

期待される動作:

サムネイル画像は機能します。

実際の動作:

  • User_gmailとUser_gappsでサインインし、認証フロー中にUser_gmailを選択すると、変更されたすべてのドキュメントのサムイルが表示されます。

  • User_gappsまたはUser_gmailのみでサインインすると、サムネイルが正しく表示されます。

  • ただし、両方のユーザーとしてサインインし、認証フロー中にUser_gappsをユーザーとして選択すると、サムネイルが壊れて表示されます。

更新:これを再現する最も簡単な方法は、複数のアカウント、1つの個人アカウントと1つのアプリアカウントにサインインし、このAPIを使用することです。仕事用アカウントでAPIを承認し、リクエストを実行して、「thumbnailLink」URLをクリックすると、404が表示されます。

https://developers.google.com/apis-explorer/#p/drive/v2/drive.changes.list?includeDeleted=false

4

1 に答える 1

4

Google ドキュメントのサムネイルを表示するには、2 つの方法があります。Google ドライブ API を介してサムネイルの URL を取得した後、この URL は「Cookie」承認または OAuth 2.0 承認のいずれかを使用して表示できます。

「Cookie」承認を使用しているようです (つまり、ユーザーは現在ブラウザーでサインインしています)。ブラウザはデフォルトで 2 つのアカウントのいずれかを使用しますが、残念ながら正しいアカウントを使用しない可能性があります。その特定のシナリオでは、サムネイルの URL に&authuser=0または&authuser=1を追加できます。これにより、アカウントを強制的に使用するか、他の値を使用できます。2 つの値のいずれかが機能します。

1問題は、どちらの値が機能するか (または)がわからない0ため、Javascript を使用してプログラムで 2 つの URL をテストし、どちらが機能するか失敗するかを確認する必要があることです。

サムネイルを読み込むもう 1 つの方法は、OAuth 2 認証を使用することです。これはより堅牢です。を追加することで簡単に行うことができます&access_token=<Your_OAuth_2_access_token>。API リクエストで使用したのと同じ OAuth アクセス トークン (以前は Bearer トークンと呼ばれていました) を使用していることを確認してください。これにより、画像が確実に読み込まれます。これは、ユーザーが Google アカウントからサインアウトしている場合でも機能します。実際のファイルのデータにアクセスする必要があります。drive.readonly.metadataたとえば、スコープを承認した場合、これは機能しません。次のスコープのいずれかを承認する必要があります。

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

注意: アクセス トークンは 1 時間のみ有効です。

于 2013-02-13T23:29:18.220 に答える