10

Google ドライブ SDK を介してファイルのコンテンツを取得できないようです。問題を再現するために、API Explorerを使用して小さなテキスト ファイルのメタ データを取得します。

200 OK

- Show headers -

{

 "kind": "drive#file",
 "id": "0B75zvzRT_NusaDBtSTVmWWk1cVk",
 "etag": "\"B6kWtzuiQYCrVi2MWyRaub0CRyo/MTM1NTgzNDEzMjU5MA\"",
 "selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk",
 "webContentLink": "https://docs.google.com/uc?id=0B75zvzRT_NusaDBtSTVmWWk1cVk&export=download",
 "alternateLink": "https://docs.google.com/file/d/0B75zvzRT_NusaDBtSTVmWWk1cVk/edit",
 "iconLink": "https://ssl.gstatic.com/docs/doclist/images/icon_10_text_list.png",
 "thumbnailLink":     "https://lh4.googleusercontent.com/ntOMGJ9Is5KigDUzpOe6xKRqVqHPyeeXPImG1vZTF2FDM5YOyeCZT62FsdBWTnetBA=s220",
 "title": "sync.txt",
 "mimeType": "text/plain",
 "description": "description",
 "labels": {
  "starred": false,
  "hidden": false,
  "trashed": false,
  "restricted": false,
  "viewed": true
 },
 "createdDate": "2012-12-18T11:49:21.710Z",
 "modifiedDate": "2012-12-18T12:35:32.590Z",
 "modifiedByMeDate": "2012-12-18T12:35:32.590Z",
 "lastViewedByMeDate": "2012-12-18T12:35:32.416Z",
 "parents": [
  {

   "kind": "drive#parentReference",
   "id": "0B75zvzRT_NusdVVJeGk2dVc2VHM",
   "selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk/parents/0B75zvzRT_NusdVVJeGk2dVc2VHM",
   "parentLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusdVVJeGk2dVc2VHM",
   "isRoot": false
  }
 ],
 "downloadUrl": "https://doc-0g-0-docs.googleusercontent.com/docs/securesc/b2hod7vud4bdud0ju4mut5hh2assmdju/rmi0iqd62g0im724ngmc5uva7femfffo/1355832000000/00903399969355284739/00903399969355284739/0B75zvzRT_NusaDBtSTVmWWk1cVk?h=16653014193614665626&e=download&gd=true",
 "userPermission": {
  "kind": "drive#permission",
  "etag": "\"B6kWtzuiQYCrVi2MWyRaub0CRyo/kH0lkP-s4aFu1o5itR2fFqyLM6o\"",
  "id": "me",
  "selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk/permissions/me",
  "role": "owner",
  "type": "user"
 },
 "originalFilename": "sync.txt",
 "fileExtension": "txt",
 "md5Checksum": "ecd21579645508d1c206d5e6e20fd101",
 "fileSize": "156",
 "quotaBytesUsed": "156",
 "ownerNames": [
  "Sam Smith"
 ],
 "lastModifyingUserName": "Sam Smith",
 "editable": true,
 "writersCanShare": true
}

次に downloadUrl リンクをクリックすると、常に空の応答、つまり本文が空の 200 応答が返されます。URL の末尾から「gd=true」パラメータを削除すると、正常にダウンロードされます。私のプログラムでは、「gd = true」を削除しても機能しないことを除いて同じことが起こります(おそらく、プログラムがサーバー上で実行されているため、アカウントにログインしていないためです)。

私の主な質問は、パラメーターをいじらないと downloadUrl リンクが応答を返さないのはなぜですか?

更新: まったく同じ問題を報告している他の人が見つかりましたここここここ

解決策: OK、ようやく解決しました。downloadURL の GET リクエストでは、ヘッダーでアクセス トークンを送信する必要があるようです。つまり、「Authorization: Bearer {your access token}」ヘッダーを送信します。クエリ文字列の一部としてアクセス トークンを送信しないでください。ドライブ SDK で使用した他のすべての API 呼び出しは、クエリ文字列の一部としてアクセス トークンを使用しても問題ありません (これを除く)。

4

2 に答える 2

10

OK私はついにそれを解決しました。downloadURL の GET リクエストでは、ヘッダーでアクセス トークンを送信する必要があるようです。つまり、「Authorization: Bearer {your access token}」ヘッダーを送信します。クエリ文字列の一部としてアクセス トークンを送信しないでください。ドライブ SDK で使用した他のすべての API 呼び出しは、クエリ文字列の一部としてアクセス トークンを使用しても問題ありません (これを除く)。

于 2012-12-19T09:14:52.237 に答える