アップデート
API エクスプローラーから (「id」フィールドが定義された) 作業中の要求 (cURL にコピー) を取得し、URL と Authorization ヘッダーの API キーを、成功した要求 (「id」フィールドが定義されていない) のものに置き換えました。 . このリクエストの実行に失敗しました。そのため、500 エラーで自分の資格情報を使用すると、まったく同じヘッダー (承認を除く) とまったく同じ要求 (キーを除く) が失敗します。さらに、これらの同じ資格情報は Drive API に対して他の要求を行うことができるため、それらは実際に有効です。
更新 2
以下は、API エクスプローラーから取得され、削除された cURL 要求です。これらが自分のキー/トークンに置き換えられると、リクエストは 500 エラーを返します。「(id)」を削除したまったく同じリクエストですが、自分のキー/トークンで機能します。
curl 'https://content.googleapis.com/drive/v2/files?q=trashed%3Dfalse+and+%27root%27+in+parents&fields=items(id)%2CnextPageToken&key=<KEY>' -H 'Authorization: Bearer <TOKEN>' -H 'X-Goog-Encode-Response-If-Executable: base64' -H 'X-Origin: https://developers.google.com' -H 'X-ClientDetails: appVersion=5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_1)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F40.0.2214.115%20Safari%2F537.36&platform=MacIntel&userAgent=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_1)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F40.0.2214.115%20Safari%2F537.36' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36' -H 'Referer: https://content.googleapis.com/static/proxy.html?jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.9OJnLZReRBQ.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Ft%3Dzcms%2Frs%3DAGLTcCOvQmx_voM6JiXRxPIdYyD-EV0zsQ' -H 'X-JavaScript-User-Agent: google-api-javascript-client/1.1.0-beta' -H 'X-Referer: https://developers.google.com' --compressed
私のトークンは次のスコープで承認されています: " https://www.googleapis.com/auth/drive.file ": " https://www.googleapis.com/auth/userinfo.email ": " https:// www.googleapis.com/auth/drive.install ": " https://www.googleapis.com/auth/contacts.readonly ": " https://www.googleapis.com/auth/drive.appdata ": " https://www.googleapis.com/auth/plus.me ": " https://www.googleapis.com/auth/drive.metadata.readonly ": " https://www.googleapis.com/auth/ gmail.readonly "
元の投稿
数日前、ページの読み込みごとに実行されていた files.list クエリが、常に 500 (Internal Server Error) 応答を返すようになりました。files.list リクエストを実行するために JS Google クライアント ライブラリを使用しています。API エクスプローラーを介して実行される同じ要求が機能しています。
「fields」パラメーターを削除するか、「fields」パラメーターを単純化して「items(id),nextPageToken」ではなく「items,nextPageToken」にすることで、files.list リクエストを成功させることができます。
リクエストを実行するコードを以下に簡略化します。
var request = gapi.client.drive.files.list(
{
fields: 'items(id),nextPageToken',
maxResults: 50,
q: "trashed=false and 'root' in parents",
pageToken: undefined
});
...
// Async
request.execute();
以下は、API エクスプローラーとページから送信されたリクエストです (壊れたバージョンと動作中のバージョン)。APIエクスプローラー(およびいくつかのヘッダー...)からの「q」パラメーターの異なるエンコーディングを除いて、それらの間に違いは見られません。「id」フィールドを指定せずに別のエンコーディングが機能することを考えると、リクエストの「q」パラメータを API Explorer でエンコードされたバージョンに置き換えても問題は解決しません。
API Explorer から送信されたリクエスト - 動作
https://content.googleapis.com/drive/v2/files?maxResults=50&q=trashed%3Dfalse+and+%27root%27+in+parents&fields=items(id)%2CnextPageToken&key=<API KEY>
ページから送信されたリクエスト (フィールドあり) - 破損
https://content.googleapis.com/drive/v2/files?maxResults=50&q=trashed%3Dfalse%20and%20%27root%27%20in%20parents&fields=items(id)%2CnextPageToken&key=<API KEY>
ページから送信されたリクエスト (フィールドなし) - Works
https://content.googleapis.com/drive/v2/files?maxResults=50&q=trashed%3Dfalse%20and%20%27root%27%20in%20parents&fields=items%2CnextPageToken&key=<API_KEY>
ここで明らかな何かが欠けていますか?何らかの方法でフィールド パラメータを適切にエンコードできていないのでしょうか (encodeURIComponent によって「無効なリクエスト」エラーが発生します)。他の誰かが同じ問題を再現できますか、それとも既に発生していますか?
ありがとう!