刷新Google drive access__token

时间:2017-03-15 16:25:10

标签: python google-drive-api webhooks

我将Google云端硬盘集成到我的应用中。并且希望每次在连接的驱动器帐户中更改某些内容时都会收到推送通知/ webhook。 access_token在连接驱动器帐户一小时后到期,之后我无法接收任何webhook。 如何刷新并自动刷新?

1 个答案:

答案 0 :(得分:2)

您可以使用刷新令牌。可以通过刷新令牌更新访问令牌。可以如下检索该刷新令牌。首先,检索refreshtoken需要以下信息。

  • 客户ID
  • 客户端秘密
  • 重定向URI
  • 作用域

从你的问题来看,似乎你已经有了一个accessstoken。所以我认为你有以上信息。

接下来,使用上述信息,它会检索您的应用程序可用于获取访问令牌的授权码。请按如下方式创建一个URL并将其放入浏览器,然后单击进行授权。我总是使用此URL检索代码并检索刷新令牌。可以通过包含access_type = offline。

来检索刷新令牌
https://accounts.google.com/o/oauth2/auth?
response_type=code&
approval_prompt=force&
access_type=offline&
client_id=### your_client_ID ###&
redirect_uri=### edirect_uri ###&
scope=### scopes ###

授权码显示在浏览器上或作为URL显示。您可以使用代码检索刷新令牌。

以下2个样本是python脚本。

检索刷新令牌:

import requests
r = requests.post(
    'https://accounts.google.com/o/oauth2/token',
    headers={'content-type': 'application/x-www-form-urlencoded'},
    data={
        'grant_type': 'authorization_code',
        'client_id': '#####',
        'client_secret': '#####',
        'redirect_uri': '#####',
        'code': '#####',
    }
)

使用刷新令牌检索访问令牌:

import requests
r = requests.post(
    'https://www.googleapis.com/oauth2/v4/token',
    headers={'content-type': 'application/x-www-form-urlencoded'},
    data={
        'grant_type': 'refresh_token',
        'client_id': '#####',
        'client_secret': '#####',
        'refresh_token': '#####',
    }
)

您可以在此处查看详细信息。 https://developers.google.com/identity/protocols/OAuth2WebServer