0

在 Web 应用程序的 URL 中使用 OAuth 2 授权代码时遇到问题,例如由 Google 的 OAuth 方法返回的 (https://developers.google.com/accounts/docs/OAuth2Login)。

我一直在使用谷歌重定向方法;您将用户重定向到 Google URL,并传入 client_id 和 redirect_uri。用户进行身份验证并将授权代码作为

问题是访问代码保留在页面 URL 中,因此如果用户添加书签或发布 URL,他们发送的授权代码无效。

例如:

http://myapp.com/?code=kACASDSDdAS81J5B8M_owCyUNgV46XdZaqBBMh4T8OJFEKPRrgN7gtiFOcMW5Fv3gk

处理这种情况的最佳方法是什么?理想情况下,我想在 POST 正文中发送授权代码,因为它对玩家不可见?

我花了一些时间查看 Google App Engine(我正在使用的平台)来重定向用户,但似乎无法在重定向中发送 POST 正文。

4

1 回答 1

0

使用 URL 查询参数中的授权代码将用户定向到您的应用后,您应该:

1) 通过向 Google 的 OAuth 2.0 令牌端点发送 HTTPS POST 来交换访问令牌的授权代码,并根据需要保存该访问令牌(数据存储区、内存缓存等)

2) 将用户重定向到不带?code. 您不能在重定向中发送 POST 正文(HTTP 不允许),但如果您在服务器端存储访问令牌以进行 API 调用,则不需要这样做。

如果您必须使令牌可在客户端访问,您可以:

a) 将其作为 cookie 连同重定向一起发送回(将其公开给客户端,尽管您可以对其进行加密)或

b) 生成一个 HTML 表单,使用 JavaScript 自动提交它而不是进行重定向。有点丑,但很常见。

于 2012-06-19T08:54:50.587 回答