我想通过Google API导入Gmail
用户的联系人。
我有以下内容:
-
使用
Client secret and key
获取授权的url。这是用户访问以允许我的应用程序访问的url。 -
授权的url重定向到应用程序设置中指定的重定向uri。
-
我在url中有一个查询参数
code
,我猜这是文档在这里说的授权代码。
问题:
如果可能的话,我想交换这个代码以获得access token
和refresh token
到javascript
。但我在javascript
中看不到这部分的任何文档。
在我的服务器端,我这样做是为了获得authorized url
:
token = gdata.gauth.OAuth2Token(client_id=settings.GMAIL_CLIENT_ID,
client_secret=settings.GMAIL_API_KEY,
scope=scope, user_agent=user_agent)
auth_url = token.generate_authorize_url(redirect_uri=redirect_uri)
然后将用户重定向到CCD_ 9。现在,一旦用户允许请求的权限,他们就会使用查询参数code
重定向回我的网站。我想从这里使用javascript
来获得access token
。
另一种选择是,一旦用户被重定向到我的网站,就在服务器端获得access token
,并将其与响应一起返回给他,但我真的不想这样做。
简短回答:如果您想使用OAuth2客户端身份验证,则使用了错误的文档。
现在是细节。
OAuth2有4种授权类型:
- 授权代码
- 隐式
- 资源所有者密码凭据和
- 客户端凭据
如果你想要更多的细节,你可以阅读这篇很好的文章并进行解释。
您已经指出OAuth2 for Web Servers
的Google文档,它符合授权代码类型。它依赖于SSL上的Web服务器数据交换,因为它涉及到client_secret
的交换。
也就是说,如果您尝试使用JavaScript执行POST请求以获取access_token
,那么您将暴露client_secret
,因为它是POST调用中的必需参数。
如果您想尝试在不使用服务器端代码的情况下请求access_token
,则需要使用隐式授予类型。
您可以在Using OAuth 2.0 for Client side Applications 中找到隐式授权类型的Google文档