【问题标题】:OAuth2 with Hash query string, Imgur API带有哈希查询字符串的 OAuth2,Imgur API
【发布时间】:2020-05-15 12:30:02
【问题描述】:

我正在更新我的桌面应用程序(一个 Imgur 客户端),以便在用户授权访问该应用程序后使用本地 Web 服务器从浏览器捕获 redirect_url,以应对即将弃用的代码/PIN 身份验证方法。所以我在浏览器中启动 URL,用户接受,然后 Imgur 重定向到

http://localhost:7710/myapp?state=auth#access_token=....&expires_in= 等等

但是浏览器在 # 处截断 URL,所以所有变量都丢失了,我的应用只收到“state=auth”

来自 Imgur 的 API 文档:

response_type参数token:这个授权流程将 通过重定向直接返回access_token和refresh_token 您在注册时指定的 URL,以哈希查询的形式 字符串参数。例子: http://example.com#access_token=ACCESS_TOKEN&token_type=Bearer&expires_in=3600

代码和 pin 响应类型已被弃用,很快将不再使用 不再受支持。

如果用户授予,Imgur 会向您的应用程序返回一个访问令牌 您的应用程序请求的权限。访问令牌是 作为片段的一部分返回到您的应用程序 access_token 参数。由于一个片段(URL 之后的部分 #) 不发送到服务器,客户端javascript必须解析 片段并提取access_token参数的值。

显然他们没有考虑到桌面应用程序的这一点,还是我遗漏了什么?

【问题讨论】:

    标签: oauth-2.0 imgur


    【解决方案1】:

    Imgur 的东西看起来不标准,因为 response_type=token 是隐式流的基本版本,它曾经是单页 pps 的解决方案。

    如今,所有基于 UI 的流程都应使用授权代码流程 (PKCE) 和 response_type=code。

    由于您的应用充当(环回)网络服务器,因此它不会接收哈希片段参数,这些参数仅适用于在浏览器中运行的 JavaScript 代码。

    使您能够获取完整 URL 的一个选项是通过系统浏览器登录并使用 Private URI Scheme 回调应用程序。

    上面的链接是一个可视化的博客文章,用于解释这是如何工作的,以防万一。

    【讨论】:

    • 我想避免使用应用程序协议,似乎更麻烦+Windows版本之间的差异
    • 是的 - 这可能是相当多的工作。如果我是您,我不会急于将您的代码更改为错误/隐式流程。我会先与 Imgur 取得联系。更新到正确的流程符合他们的利益,并且将使多个当前和未来的客户受益。
    猜你喜欢
    • 1970-01-01
    • 2016-08-24
    • 2013-01-21
    • 2011-06-25
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多