2

我想Gmail通过 Google API 导入用户的联系人。

我有以下内容:

  1. 用于Client secret and key获取授权的url。这是用户访问以允许我的应用程序许可的 url。

  2. 授权 url 重定向到 App 设置中指定的重定向 uri。

  3. 我在 url 中有一个查询参数code,我猜这是文档在此处所说的授权代码。

问题:

如果可能,我想交换此代码以获取access tokenrefresh 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)

然后将用户重定向到auth_url. 现在,一旦用户允许请求的权限,他们就会使用查询参数重定向回我的站点code。我想使用javascriptfrom here 来获取access token.

另一种选择是access token一旦用户被重定向到我的网站并将其与响应一起返回给他,就在服务器端获取,但我真的不想这样做。

4

1 回答 1

0

简短回答:如果您想使用 OAuth2 客户端身份验证,则说明您使用了错误的文档。

现在是细节。

OAuth2 有 4 种授权类型:

  1. 授权码
  2. 隐式
  3. 资源所有者密码凭证
  4. 客户凭证

如果您想了解更多详细信息,可以阅读这篇带有解释的好帖子。

您已将 Google 文档指向OAuth2 for Web Servers,它适合授权代码类型。它依赖于通过 SSL 进行的 Web 服务器数据交换,因为它涉及交换client_secret.

即,如果您尝试执行 POST 请求以获取access_token使用 JavaScript,您将公开您的client_secret,因为它是 POST 调用中的必需参数。

如果要尝试请求access_token不使用服务器端代码,则需要使用隐式授权类型。

您可以在Using OAuth 2.0 for Client-side Applications中找到有关隐式授权类型的 Google 文档

于 2014-10-08T15:54:47.233 回答