【问题标题】:Dropbox OAuth2 authorize API is not redirecting as expectedDropbox OAuth2 授权 API 未按预期重定向
【发布时间】:2014-12-23 00:23:54
【问题描述】:

我正在尝试连接到Dropbox API using OAuth2。我使用DropNet 作为客户端库并使用令牌(隐式授予)流选项。测试代码(与DropNet.Samples.WinForms 大致相同)是一个简单的对话框,带有嵌入式浏览器控件,用于显示 API 登录页面。

我看到的问题是 API 没有将浏览器重定向到指定的重定向 URL (http://localhost)。在我提供我的凭据并单击允许以授予访问权限后,我没有被重定向到本地主机,而是被重定向到 https://www.dropbox.com/1/oauth2/authorize_submit,它无法加载(错误 404)。重定向 URL 上也没有查询参数。我期望使用包含授权码的查询参数重定向到 localhost。

作为参考,登录 URL 为:https://www.dropbox.com/1/oauth2/authorize?response_type=token&client_id=<blah>&redirect_uri=http://localhost

有谁知道我做错了什么?该行为看起来与Obtain OAuth2 Access Token for Dropbox Core API with Codenameone's Oauth2 Class 中描述的非常相似,但那里没有直接答案。

【问题讨论】:

  • 重定向 URI 应在 /oauth2/authorize 的 redirect_uri 参数中指定:dropbox.com/developers/core/docs#oa2-authorize 您是否将其提供给 /oauth2/authorize?
  • 是的,我提供了重定向 URL 并验证它在授权调用的查询字符串中。
  • 你能发布一个示例 /authorize URL 吗?
  • 感谢您的输入 - 我将 URL 添加到问题中。我还注意到客户端库 (DropNet) 使用的是 api.dropbox.com 而不是 www.dropbox.com,我认为这也是错误的,但现在已修复.
  • 谢谢!样本看起来不错。嵌入式浏览器中是否启用了 JavaScript? (如果不是,则需要。)如果是,您是否在控制台中收到任何 JavaScript 错误?

标签: oauth oauth-2.0 dropbox-api


【解决方案1】:

[编辑] 我仍然不知道为什么使用 http://localhost 作为重定向 URL 不起作用,但我按照 @Greg 的建议切换到使用 https://www.dropbox.com/1/oauth2/redirect_receiver,现在它可以正常工作了。

如果它影响其他尝试使用 DropNet WinForms 示例代码的人,除了DocumentCompleted,我还必须调整代码以处理嵌入式浏览器中的NavigatingNavigated 事件,因为浏览器行为似乎因操作系统和浏览器版本而异(不足为奇)。代码还需要足够智能,以便在检测到重定向后停止导航,因为浏览器可能会从该点继续导航。

最初我通过重定向到 Google 来修复它,但正如 @smarks 指出的那样,这不是一个好主意。

【讨论】:

  • 很高兴听到它现在可以正常工作,尽管我相信无论如何它应该与localhost 一起工作。如果有帮助,Dropbox 确实为此目的提供了此页面:dropbox.com/1/oauth2/redirect_receiver
  • 谢谢!我不知道那个redirect_receiver 页面——这似乎正是我想要的。我会尝试一下,看看它是如何工作的,并用这个信息更新答案。
  • “话虽如此,使用 Google 作为重定向 URL 可能是一件坏事,因为我基本上是在向他们发送我的令牌。他们不会有我的 API 密钥来使用它,当然,但它似乎仍然不确定。” API 密钥是公共知识,无论如何您都不需要使用访问令牌。实际的访问令牌位于 URL 片段中,因此它不会直接发送到目标服务器,但页面上的 JavaScript 可以访问它,因此您认为这是安全风险是正确的。 (redirect_receiver 是个不错的选择)
  • 感谢@smarx 提供的信息 - 这是有道理的。我会确保在答案编辑中指出这一点。
猜你喜欢
  • 2020-07-07
  • 2012-07-11
  • 2021-05-30
  • 2020-03-10
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多