如何使用Google Oauth2访问令牌?

1 投票
1 回答
2240 浏览
提问于 2025-04-17 08:38

我正在为一个网页应用搭建单点登录(SSO)系统。我可以登录已知用户,也可以通过https://www.googleapis.com/oauth2/v1/userinfo创建新的未知用户。

我收到的响应是这样的:

{
    "access_token":"1/fFAGcxxxxxxxxxxxxxxxxxxx",
    "expires_in":3920,
    "token_type":"Bearer",
    "refresh_token":"1/xEoDL4iW3cxlI7yDbSRFYxxxxxxxxxxxxxxxxxxx"
}

所以我得到了用户的信息:

url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=%s' % a['access_token']
req = urllib2.Request( url )
opener = urllib2.build_opener( urllib2.HTTPSHandler( debuglevel=0 ) )
req = opener.open( req )
reply = req.read()
req.close()
a = json.loads( reply )

这让我获取了用户的信息,并且获得了通过我最初设置的权限访问他们的GMail。但是,这种获取用户信息的方法是否允许我通过IMAP访问用户的GMail呢?

http://code.google.com/apis/gmail/oauth/protocol.html

我得到的access_token是否允许我访问这些内容?我现在拿到这个'access_token'后,不知道该怎么用。

1 个回答

4

(不确定你是否还需要这个答案,但以防万一...)

现在大多数谷歌的API都可以用OAuth2来进行身份验证,但谷歌的IMAP客户端只支持OAuth 1。这意味着你不仅需要一个访问令牌,还需要一个“密钥”;而在OAuth2的响应中你是得不到这个密钥的(因为你不需要它),所以这对你来说几乎没什么用。

你可以选择使用OAuth 1;谷歌仍然支持这个,虽然它没有OAuth2那么多的功能。使用它的具体细节可以在你提到的链接找到(现在会重定向到 https://developers.google.com/google-apps/gmail/oauth_protocol)。我强烈建议你使用一个已知的库,比如 python-oauth2(尽管名字里有“OAuth2”,但它实际上是用OAuth 1的)。

撰写回答