【问题标题】:How to refresh access_token without a refresh_token with instagram api如何使用 instagram api 在没有 refresh_token 的情况下刷新 access_token
【发布时间】:2019-04-03 19:05:05
【问题描述】:

我正在为我的 instagram 客户端刷新我的 access_token,这样我的用户就不需要在每次访问令牌过期时都登录。有没有办法在没有 refresh_token 的情况下做到这一点(instagram api 响应不包含 refresh_token)。

您可以在此处查看 instagram 列出的步骤:https://www.instagram.com/developer/authentication/

这是 instagram oauth api 的响应对象:

{ “access_token”:“fb2e77d.47a0479900504cb3ab4a1f626d174d2d”, “用户”:{ “id”:“1574083”, "用户名": "snoopdogg", "full_name": "Snoop Dogg", "profile_picture": "..." } }

我希望响应中有一个“refresh_token”字段,以便稍后我们可以请求一个新的“access_token”。

【问题讨论】:

    标签: oauth-2.0 instagram-api


    【解决方案1】:

    首先,您需要使用常规访问令牌(仅有效期为一小时)获取长期访问令牌:

    curl -i -X GET "https://graph.instagram.com/access_token
      ?grant_type=ig_exchange_token
      &client_secret={instagram-app-secret}
      &access_token={short-lived-access-token}"
    

    然后,您可以通过使用长寿命令牌本身来请求GET /refresh_access_token 端点来刷新长寿命令牌:

    curl -i -X GET "https://graph.instagram.com/refresh_access_token
      ?grant_type=ig_refresh_token
      &access_token={long-lived-access-token}"
    

    刷新长期令牌使其再次有效 60 天。

    您可以查看Instagram documentation了解更多详情。

    【讨论】:

    • 嗨,William,我尝试使用 refresh_access_token 来刷新我的长期令牌,但它没有用,它只是返回当前过期时间,而不是再次将其刷新到 60 天
    • 嗨,Jay,确保您的长寿令牌至少有 24 小时的历史。来自the documentation:“刷新至少存在 24 小时但尚未过期的长期 Instagram 用户访问令牌。”
    【解决方案2】:

    如果用户没有使用他们的帐户重新授权,则无法刷新令牌。您发布的链接上有关于它的通知:

    即使我们的访问令牌未指定过期时间,您的应用也应处理用户撤销访问权限或 Instagram 在一段时间后使令牌过期的情况。如果令牌不再有效,API 响应将包含“error_type=OAuthAccessTokenException”。在这种情况下,您将需要重新验证用户以获取新的有效令牌。 换句话说:不要假设您的 access_token 永远有效。

    【讨论】:

    • 感谢 Hermanschutte 的帮助!是否可以重新验证用户身份,而无需用户再次通过自动流程,就像使用刷新令牌一样?
    • 不,这是不可能的。用户将不得不再次完成流程。
    • refresh_token 还在 IG 开发者键盘中吗?
    猜你喜欢
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2014-03-04
    • 2020-05-20
    相关资源
    最近更新 更多