你可以使用Oauth2,我过去已经完成了它,但你需要监控它。您需要一次授权此代码并保存刷新令牌。刷新令牌很长时间,他们通常不会过期,但如果您的代码可以再次授权,您的代码应该能够与您联系。如果保存刷新令牌,则可以随时使用最后一步来请求新的访问令牌。
Oauth2基本上构建为三个调用。我可以给你HTTP调用我会让你解决Python Google 3 Legged OAuth2流程
的 认证和授权 强>
您需要的第一件事是用户的许可。为此,您可以在授权服务器上构建链接。这是一个HTTP get请求,您可以将其放在普通的浏览器窗口中进行测试。
GET https://accounts.google.com/o/oauth2/auth?client_id={clientid}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code
关于重定向uri的注意事项。如果您在服务器或其他东西上运行它,那么使用 urn:ietf:wg:oauth:2.0:oob 它基本上告诉服务器将代码返回到其他地方,如果你在网站上管道,你可以提供一个URL来处理响应。
urn:ietf:wg:oauth:2.0:oob
如果用户接受上述内容,那么您将拥有授权码。
的 交换代码 强>
您接下来需要做的是交换上述响应返回的授权码并请求访问令牌和刷新令牌。这是一个http post电话
POST https://accounts.google.com/o/oauth2/token code=4/X9lG6uWd8-MMJPElWggHZRzyFKtp.QubAT_P-GEwePvB8fYmgkJzntDnaiAI&client_id={ClientId}&client_secret={ClientSecret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code
身体参数应如我所示,由&分隔。并且请求的内容类型是 application/x-www-form-urlencoded
application/x-www-form-urlencoded
性反应
{ "access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw", "token_type" : "Bearer", "expires_in" : 3600, "refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4" }
通过在访问令牌中添加授权标头承载令牌或在请求中发送access_token =作为参数,访问令牌可用于对api的所有请求。
的 刷新访问令牌 强>
刷新令牌是长寿的,他们不应该过期,所以你的代码应该能够处理,但通常他们永远是好的。访问令牌仅在一小时内有效,您需要申请新的访问令牌。
POST https://accounts.google.com/o/oauth2/token client_id={ClientId}&client_secret={ClientSecret}&refresh_token=1/ffYmfI0sjR54Ft9oupubLzrJhD1hZS5tWQcyAvNECCA&grant_type=refresh_token
响应
{ "access_token" : "ya29.1.AADtN_XK16As2ZHlScqOxGtntIlevNcasMSPwGiE3pe5ANZfrmJTcsI3ZtAjv4sDrPDRnQ", "token_type" : "Bearer", "expires_in" : 3600 }