0

Tomcat で実行されている Java で AuthorizationCodeFlow を使用して資格情報を取得できます。

今、サーバーで取得したアクセストークンをクライアントに戻そうとしています。これにより、gapi javascript クライアントを使用して、サーバーを経由せずにブラウザーで作業を行うことができます。

次を使用して、gapi にアクセス トークンを設定します。

function setAccessToken() {
    gapi.auth.setToken({
        access_token: '<access_token from server>'
    });
}

次に、gapi.client.load を呼び出して、ドライブ クライアント コードを取得します。

gapi.client.load('drive', 'v2', onDriveClientLoaded);

次に、関数を呼び出して、Google ドライブでフォルダーを取得または作成します (これは、gapi.auth.authorize() を使用してテストされているため、このままのコードが機能することがわかっています)。

function onDriveClientLoaded() {
    getOrCreateFolder();
}

しかし、 getOrCreateFolder で gapi.client.drive.children.list(...) を呼び出すと、応答は

{
    code: 401,
    message: "Invalid Credentials",
    ...
}

人々がこれを行ったことを示している場所を複数見てきました。しかし、これまでのところ、これを機能させることはできません。

フィドラーでは、次の応答が得られます。

HTTP/1.1 401 Unauthorized
Vary: Origin
Vary: X-Origin
WWW-Authenticate: Bearer realm="https://accounts.google.com/", error=invalid_token
Content-Type: application/json; charset=UTF-8
Date: Fri, 01 May 2015 20:16:22 GMT
Expires: Fri, 01 May 2015 20:16:22 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Alternate-Protocol: 443:quic,p=1
Content-Length: 249

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}

少し編集されたリクエストは次のとおりです。

GET https://content.googleapis.com/drive/v2/files/root/children?q=title%20%3D%20%27TestFolder%27 HTTP/1.1
Host: content.googleapis.com
Connection: keep-alive
Authorization: Bearer <access_token from server>
X-Goog-Encode-Response-If-Executable: base64
X-Origin: http://localhost:8080
X-ClientDetails: appVersion=5.0%20(Windows%20NT%206.1)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F42.0.2311.90%20Safari%2F537.36&platform=Win32&userAgent=Mozilla%2F5.0%20(Windows%20NT%206.1)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F42.0.2311.90%20Safari%2F537.36
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36
X-JavaScript-User-Agent: google-api-javascript-client/1.1.0-beta
X-Referer: http://localhost:8080
Accept: */*
X-Chrome-UMA-Enabled: 1
X-Client-Data: CKu1yQEIhLbJAQijtskBCKm2yQEIxLbJAQiiicoBCImSygE=
Referer: https://content.googleapis.com/static/proxy.html?jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.OuOrzZ8GQcU.O%2Fm%3D__features__%2Fam%3DIQ%2Frt%3Dj%2Fd%3D1%2Ft%3Dzcms%2Frs%3DAGLTcCO9uGNmv6wlfXBJwCbYRCdcqx94WQ
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
If-None-Match: "dM4Z0GasI3ekQlrgb3F8B4ytx24/sCBysa-CxrZGnYdsTvea7yHHhJ0"
4

1 に答える 1