我想通过仅接受REST端点的网关路由我的Google Analytics Reporting API请求(代码将在AWS Lambda中)。由于我无法在与网关的交互中使用客户端包方法,因此我需要将API作为REST-ful端点进行查询。
官方文件说(Link):
Authorization: Bearer {oauth2-token}
GET https://www.googleapis.com/analytics/v3/data/ga
?ids=ga:12345
&start-date=2008-10-01
&end-date=2008-10-31
&metrics=ga:sessions,ga:bounces
我不知道在Python中创建oauth2-token。我创建了一个服务帐户并拥有secrets_json,其中包含客户端ID和密钥。然后在这个link中给出的客户端包方法有效。但我只需要Rest方法!
使用这些,我如何创建oauth2-token?
你可以使用Oauth2,我过去已经完成了它,但你需要监控它。您需要一次授权此代码并保存刷新令牌。刷新令牌很长时间,他们通常不会过期,但如果您的代码可以再次授权,您的代码应该能够与您联系。如果保存刷新令牌,则可以随时使用最后一步来请求新的访问令牌。
Oauth2基本上构建为三个调用。我可以给你HTTP调用我会让你解决Python qazxsw poi
身份验证和授权
您需要的第一件事是用户的许可。为此,您可以在授权服务器上构建链接。这是一个HTTP get请求,您可以将其放在普通的浏览器窗口中进行测试。
Google 3 Legged OAuth2 Flow
关于重定向uri的注意事项。如果你在服务器或其他东西上运行它,那么使用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
它基本上告诉服务器将代码返回到其他地方来自其他方面,如果你在网站上冲洗,你可以提供一个url到将处理响应的页面。
如果用户接受上述内容,那么您将拥有授权码。
交换代码
您接下来需要做的是交换上述响应返回的授权码并请求访问令牌和刷新令牌。这是一个http post电话
urn:ietf:wg:oauth:2.0:oob
body参数应该如我所示,用&分隔,并且请求的内容类型是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
通过在访问令牌中添加授权标头承载令牌或在请求中发送access_token =作为参数,访问令牌可用于对api的所有请求。
刷新访问令牌
刷新令牌是长寿的,他们不应该过期,所以你的代码应该能够处理,但通常他们永远是好的。访问令牌仅在一小时内有效,您需要申请新的访问令牌。
{
"access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4"
}
响应
POST https://accounts.google.com/o/oauth2/token
client_id={ClientId}&client_secret={ClientSecret}&refresh_token=1/ffYmfI0sjR54Ft9oupubLzrJhD1hZS5tWQcyAvNECCA&grant_type=refresh_token