在Instagram上进行身份验证以使用API​​

时间:2015-11-25 10:50:33

标签: authentication instagram instagram-api

我使用Instagram API并希望获取access_token,以便通过我自己的帐户抛出api请求。当我尝试按照第一步并使用RestTemplate以编程方式获取授权代码时,我无法使其工作。

String AUTHORIZE_URL = "https://api.instagram.com/oauth/authorize/?client_id=<CLIENT_ID>&redirect_uri=<REDIRECT_URI>&response_type=code";
String url = String.format(AUTHORIZE_URL, clientId, redirectUri);
String o = restTemplate.getForObject(url, String.class);

响应是登录页面的html代码,因为Instagram要求用户登录以检查应用程序是否被授权(当然是,因为应用程序是用户属于我自己的帐户)。

如何在抛出该请求之前进行身份验证,以便将代码返回到我的redirectUri而不是抱怨登录? 注意:我尝试将请求模拟到他们的登录表单,但它返回了403 Forbidden。

注意:我已经有一个有效的access_token,手动生成,并且它完美地工作但我想实现一个流程来自动重新生成一个新的access_token,因为它们可能在将来的任何时候使它无效。

  

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

1 个答案:

答案 0 :(得分:0)

Instagram正在升级他们的API和流程。之前我们需要访问令牌来绕过强制登录屏幕。从昨天开始,他们已经删除了。

现在,如果您调用此代码,它将检查您是否已登录。如果是这样,它将调用您的AUTHORIZE_URL并发送响应代码。格式为:

现在我正在做的是我每次都直接调用你的上述网址。现在,如果用户已登录,则会向您发送响应代码,否则将要求用户登录并验证您的应用程序,然后将发送代码。从技术上讲,您消除错误案例的可能性! 因此无需在数据库中存储访问令牌或验证其有效性的开销。

现在试着检查一下会发生什么。

PS:如果要检查API行为,只需在浏览器上键入URL并检查它返回的内容!它在编码和调试时给了我很多帮助! :)