编程语言
首页 > 编程语言> > python – 刷新Google驱动器access__token

python – 刷新Google驱动器access__token

作者:互联网

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

解决方法:

您可以使用刷新令牌.可以通过刷新令牌更新访问令牌.可以如下检索该刷新令牌.首先,检索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

标签:python,webhooks,google-drive-api
来源: https://codeday.me/bug/20190926/1819991.html