68

認証の手順を完了し、アクセス トークンとリフレッシュ トークンを取得しました。

Google ドライブ API 経由で保存した更新トークンを使用してアクセス トークンを生成するには、次に何をすればよいですか?

Force.com で作業しているため、sdk を使用することはできません。API を介して直接実装する方法を提案してください。

4

9 に答える 9

42

Web API を使用している場合は、POSTURL への http 呼び出しを行う必要があります。https://www.googleapis.com/oauth2/v4/token 次の要求本文を使用します。

client_id: <YOUR_CLIENT_ID>
client_secret: <YOUR_CLIENT_SECRET>
refresh_token: <REFRESH_TOKEN_FOR_THE_USER>
grant_type: refresh_token

リフレッシュ トークンは無期限なので、何度でも使用できます。応答は次のような JSON になります。

{
  "access_token": "your refreshed access token",
  "expires_in": 3599,
  "scope": "Set of scope which you have given",
  "token_type": "Bearer"
}
于 2016-07-16T18:20:53.663 に答える
33

これを自分で実装する場合は、WebサーバーアプリケーションのOAuth 2.0フローがhttps://developers.google.com/accounts/docs/OAuth2WebServerに記載されています。特に、更新トークンの使用に関するセクションを確認する必要があります。

https://developers.google.com/accounts/docs/OAuth2WebServer#refresh

于 2012-05-17T16:17:45.527 に答える
3

私はそれを理解するのに1時間費やしたので、誰かに役立つ場合に備えて私の答えを投稿するだけです:)

まず、Google API と Google サービスからのデータのフェッチに関連する 2 つの非常に役立つリンク:

https://developers.google.com/analytics/devguides/config/mgmt/v3/quickstart/web-php

https://developers.google.com/identity/protocols/OAuth2WebServer

さらに、次の方法を使用する場合:

$client->setAccessToken($token)

は、オブジェクト内で取得し$tokenたものだけでなく、承認リクエストを行うときに Google から返された完全なオブジェクトである必要があるaccess_tokenため、オブジェクトを取得した場合は次のように言います。

{"access_token":"xyz","token_type":"Bearer","expires_in":3600,"refresh_token":"mno","created":1532363626}

次に、与える必要があります:

$client->setAccessToken('{"access_token":"xyz","token_type":"Bearer","expires_in":3600,"refresh_token":"mno","created":1532363626}')

いいえ

$client->setAccessToken('xyz')

有効期限が切れていてもaccess_token、Google はオブジェクトrefresh_token内のを使用してそれ自体を更新しaccess_tokenます。

于 2018-07-24T12:11:33.947 に答える