Instagram oauth api 给出 "code": 400, "error_type": "OAuthException", &

Posted

技术标签:

【中文标题】Instagram oauth api 给出 "code": 400, "error_type": "OAuthException", "error_message": "No matching code found."【英文标题】:Instagram oauth api gives "code": 400, "error_type": "OAuthException", "error_message": "No matching code found." Instagram oauth api 给出 "code": 400, "error_type": "OAuthException", "error_message": "No matching code found." 【发布时间】:2014-05-27 10:19:16 【问题描述】:

我正在开发一个与 Instagram API 集成以访问用户信息的应用程序。我使用授权 url 成功获取了访问令牌,但无法使用 access_token url 获取 userId:

我尝试了两个端点:

https://api.instagram.com/oauth/access_token?client_id=48275564e2c445f6b8e1356djfha3e0c&client_secret=ab2062da9f314e3489dke7ae9cbe6e5d&redirect_uri=http://localhost&grant_type=authorization_code

https://api.instagram.com/oauth/access_token

帖子正文为:

client_id=48275564e2c445f6b8e1356djfha3e0c&client_secret=ab2062da9f314e3489dke7ae9cbe6e5d&redirect_uri=http://localhost&grant_type=authorization_code&code=1351860224.4827556.5dc92c4d15ea4a4ea1b0d33eaf0eef19

(请求中的数据已修改),但我得到了以下内容


    "code": 400,
    "error_type": "OAuthException",
    "error_message": "No matching code found."

我已经看到了大量的疑问和问题,但找不到任何解决问题的方法。

我有几个问题是:

1) is the field code in the URL is same as access_token, if not how could i get the code field's value.

2) is there any other mechanism(API) to fetch the user details given the username is not known.

请帮助我,因为我完全被卡住了,而且我的最后期限已经用完了。

【问题讨论】:

为什么要投反对票..请提供任何答案或参考1e70363a5a50d9a解决问题,而不是通过投反对票逃跑.. 您的请求看起来是正确的,尽管我还没有使用 Instagram API。但是,我搜索了您的问题并指出,您不是唯一遇到此问题的人。 (groups.google.com/forum/#!topic/instagram-api-developers/…) 我会尝试喝点茶然后等待,也许他们需要一些后台工作来设置应用程序或尝试创建另一个应用程序。 这对于 Instagram 的支持团队来说似乎是一个很好的问题。当第三方 API 出现故障时,SO 并不是真正获得支持的地方。 @AmritpalSingh 你的问题已经解决了吗? 请找到我对类似问题的回答here。 【参考方案1】:

对我来说,在 instagram 开发者中取消选中 禁用隐式 OAuth -> 管理客户端修复了问题

【讨论】:

我不知道为什么这被否决了,它也为我解决了这个问题。 @Saeven 这可能是因为与检查此选项相比,使用此选项的安全性较低,因为 Instagram 仅允许使用服务器端(显式)OAuth 流而不是客户端的授权请求。阅读更多here。我不会投反对票的,我想。 对我来说,我的 grant_type 值“authorization_code”上有一个额外的空间,删除它为我修复了它,操作!请检查您的变量【参考方案2】:

我发现使用form-dataapplication/x-www-form-urlencoded 都可以正常工作。最重要的是您从重定向 uri 获得的 code 仅由一个请求使用。这意味着您可以为code 请求访问令牌一次。如果您多次使用相同的code 请求,您将收到如下错误:


    code: 400,
    error_type: "OAuthException",
    error_message: "Matching code was not found or was already used."

祝你一切顺利;)

【讨论】:

【参考方案3】:

尝试将redirect_uri参数urlEncode为

http%3A%2F%2Flocalhost

并且您的代码参数包含“。”可能是错误的字符。

code=1351860224.4827556.5dc92c4d15ea4a4ea1b0d33eaf0eef19

可能导致问题

"error_message": "No matching code found."

“5dc92c4d15ea4a4ea1b0d33eaf0eef19”似乎是正确的代码

【讨论】:

嗨查理,我尝试了这两个选项但没有成功,仍然得到同样的错误。【参考方案4】:

我遇到了同样的错误。似乎 instagram 的垃圾邮件系统禁止用户访问任何非官方应用程序。只需更改用户的密码。就我而言,这是有帮助的。 也尝试创建另一个应用程序。

UPD

从my answer 到另一个问题

看起来用户获得了不止一个code,你看到first code,但需要second。如果您遇到错误,请尝试relogin users。用户不会看到带有确认按钮的 Instagram 页面,只会看到重定向。

可能的错误算法:

1. User click auth link.
2. Get first code.
3. User click auth link (twice, redirection problem, public auth system, etc.)
4. Get another code (even on the same client_id, redirect_uri).
5. You get first code.
6. But first code already doesn't exists.

【讨论】:

这不是真的 - 更改密码没有帮助,创建 2-3 个其他应用程序也没有帮助。看起来 Instagram 会默默地过滤掉(出于某种未知原因)用户帐户 + IP 服务器的组合。见***.com/questions/29953203/…【参考方案5】:

问题出在这里,需要将重定向 url 设置为http://localhost/signin-instagram

signin-instagram 部分非常重要 因此,请转到 Instagram.com/developer -> 管理客户端 -> 安全性 -> 以 http://../signin-instagram

结尾设置的有效重定向 URI

【讨论】:

【参考方案6】:

由于缺少内容类型 HTTP 标头,关闭迟到的 instagram python sn-p 失败

response, content = http_object.request(url, method="POST", body=data,headers = "Content-type": "application/x-www-form-urlencoded")

添加 application/x-www-form-urlencoded 对我有用

【讨论】:

【参考方案7】:

我会提到什么对我有用。

第 1 步。从您的面板生成一个新的客户端密码。

第 2 步。按照here中提到的步骤1再次获取代码。

第 3 步。使用更改后的参数再次发送请求。

确保您在发送请求时已登录浏览器。您将获得所需的响应。

【讨论】:

【参考方案8】:
    进入 Facebook for Developers > 您的应用。点击“角色”并在“Instagram 测试人员”下添加一个 Instagram 测试帐户。 登录 instagram.com 并转到:Settings > Security > Apps and Websites,您将在此处接受测试邀请。 Prepare your URL link,您将把它粘贴到网络浏览器中。确保使用 Instagram 基本显示设置中的“有效 OAuth 重定向 URI” 中的有效重定向 URI。 如果您做的一切正确,该应用程序的 Instagram 测试人员帐户将可以选择访问 user_profile,user_media。继续该过程以获取代码,您可以exchange for a short-lived access token。

【讨论】:

以上是关于Instagram oauth api 给出 "code": 400, "error_type": "OAuthException", &的主要内容,如果未能解决你的问题,请参考以下文章

来自本机应用的 Instagram API OAuth

https://api.instagram.com/oauth/authorize api登录错误

在未登录浏览器连接 Instagram 时,OAuth Instagram API 删除重定向 URL 中的参数

.NET 中的 OAuth 2.0 与 Instagram API

尝试授权用户并获取令牌时突然出现 Instagram API“范围”问题 - OAuth

Instagram API:范围是不是适用于 OAuth2 隐式身份验证流程?