【问题标题】:Send custom data in Dropbox OAuth redirect URL在 Dropbox OAuth 重定向 URL 中发送自定义数据
【发布时间】:2015-06-23 23:15:17
【问题描述】:

我在我的应用程序中集成了 Dropbox 支持,为了获取用户帐户的访问令牌,我使用了他们的 OAuth2 流程。在用户授予应用程序访问权限后,我需要将用户重定向到它来自的同一 URL。问题是用户可能来自多个子域中的任何一个,而我无法完全控制这些子域,这意味着我无法将它们全部添加到我的 Dropbox 应用设置中的重定向 URL 列表中。

我想我可以通过在 www 子域下设置一个通用重定向 URL 来解决这个问题,这反过来又会重定向到正确的 URL。但是,似乎没有任何方法可以发送 Dropbox 将包含在重定向 URL 中的自定义数据。我已经体验过 YouTube 的 OAuth2 API,它们允许您在 state 查询参数中发送自定义数据,它会在重定向回来时包含在内。但 Dropbox 似乎不允许这样做。有谁知道有没有办法做到这一点?

谢谢

【问题讨论】:

    标签: oauth-2.0 dropbox


    【解决方案1】:

    Dropbox 支持 state 参数(最多 500 个字节,请参阅 /1/oauth2/authorize 的文档),您可以使用 DropboxOAuth2Flow.start 在 Python SDK 中设置任意状态。

    当您完成 OAuth 流程并调用 DropboxOAuth2Flow.finish 时,您传入的状态将作为元组的第三个成员返回。

    【讨论】:

      【解决方案2】:

      如果 Dropbox 不遵守 state 参数(并且这样做违反了规范),唯一的替代方法是确保自定义域也重定向到通用域,然后再开始向 Dropbox 进行身份验证,然后存储cookie 中的自定义 URL,它与重定向 URL 位于相同的通用域中。然后,您可以在从 Dropbox 返回时从 cookie 中获取状态/自定义 URL。

      【讨论】:

      • 感谢您的回复!你是对的,状态变量确实很受尊重,但似乎没有任何方法可以使用他们的 Python API 来设置它。但是,您可以在生成 URL 后手动更改它。再次感谢,我会将您的回答标记为已接受!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      • 2016-03-24
      相关资源
      最近更新 更多