【问题标题】:iPhone is not receiving token from Instagram API via implicit authiPhone 未通过隐式身份验证从 Instagram API 接收令牌
【发布时间】:2017-08-30 02:11:40
【问题描述】:

当使用带有 Chrome 的 Android、带有 Chrome 的 Windows、带有 Safari 的 Macbook 时,一切正常。问题仅出在 iPhone 上。

通常我会得到如下回复:

http://redirecturl.com/#access_token=ACCESS_TOKEN

使用 iPhone 我只得到:

http://redirecturl.com/

我需要使用 javascript 访问 # 值,所以我正在使用:

location.hash

我还尝试了以下方法来获取完整地址:

location.href

但没有人让我得到 Instagram 提供的哈希值。

要么 Instagram 没有使用 #access_token 做出响应,要么“聪明”的 iPhone 在收到响应时全都在鞭打它。

【问题讨论】:

    标签: javascript ios instagram


    【解决方案1】:

    有两种获取方式:服务器端或客户端。第二个选项(称为隐式身份验证)只能在客户端设置中启用隐式 OAuth 时使用

    (管理客户端 > 编辑客户端 > 安全 > 禁用隐式 OAuth)。

    默认禁用。

    在任何一种情况下,您都需要将用户重定向到授权 URL 以获取访问令牌。 显式模式的 URL:- 服务器端 API Link

    隐式模式的URL:- 客户端API Link

    在此之后,您将被重定向到 REDIRECT-URI,该 URI 将被传递一个参数。对于显式模式,这将是一个带有代码的查询字符串,而对于隐式模式,您将直接将访问令牌获取到哈希:

    your-redirect-uri?code=CODE
    your-redirect-uri#access_token=ACCESS-TOKEN
    

    对于隐式模式,您可以从 Javascript 中的window.location.hash 获取访问令牌。

    【讨论】:

    • 这正是window.location.hash不起作用的地方,仅适用于iPhone
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2015-11-04
    • 2018-09-09
    相关资源
    最近更新 更多