如何使用Instagram API在没有refresh_token的情况下刷新access_token

时间:2019-04-03 19:05:06

标签: oauth-2.0 instagram-api

我希望为我的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”,         “ username”:“ snoopdogg”,         “ full_name”:“史努比狗狗”,         “ profile_picture”:“ ...”     } }

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

2 个答案:

答案 0 :(得分:2)

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

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 /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以获得更多详细信息。

答案 1 :(得分:0)

在没有用户重新授权其帐户的情况下,无法刷新令牌。在您发布的链接上有关于此的通知:

  

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