Oauth2 Instagram API“重定向 URI 与注册的重定向 URI 不匹配”
Posted
技术标签:
【中文标题】Oauth2 Instagram API“重定向 URI 与注册的重定向 URI 不匹配”【英文标题】:Oauth2 Instagram API "redirect URI does not match registered redirect URI" 【发布时间】:2013-05-14 07:47:50 【问题描述】:我正在开发一个处于开发模式的 Rails 应用程序,它可以向omniauth 注册。
主持人是
http://localhost:3000/
我正在使用宝石:
gem 'omniauth'
gem 'omniauth-foursquare'
gem 'omniauth-instagram'
当我通过 omniauth 向 Foursquare 注册时,完全没有问题。所有设置都是正确的,我在 Foursquare 开发者设置中的 redirect_uri 等于主机 (localhost:3000)
但是,如果我在 Instagram 客户端管理器中填写完全相同的 redirect_uri (localhost:3000)*。 Instagram 给了我这个:
"code": 400,
"error_type": "OAuthException",
"error_message": "Redirect URI does not match registered redirect URI"
基于此网址:
https://instagram.com/oauth/authorize?response_type=code&client_id=<ID>&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Finstagram%2Fcallback&state=18415adf24dd97873e61094f67c0fb7a94857fedf93e9d2e&scope=basic
*
根据 Instagram,我做错了什么,应该如何解决?
【问题讨论】:
自己解决了这个问题。将localhost:3000/auth/instagram/callback 添加为redirect_uri,它工作得很好。 请将您的评论添加为答案并将问题标记为已回答。 【参考方案1】:自己解决了这个问题。将localhost:3000/auth/instagram/callback
添加为redirect_uri,效果很好。
【讨论】:
我必须添加 /users/auth/instagram/callback 有趣的是 auth/instagram/callback 这实际上有效,有没有想过这是什么原因? 我也面临同样的问题。你能帮帮我吗? 尝试不使用端口,我在我的节点应用程序中设置了一个实际路由并最终将其设置为localhost/instagram/callback,并返回了结果。【参考方案2】:我需要添加
http://localhost:3000/users/auth/instagram/callback
作为我的回调 URI,因为我正在使用 Devise。
【讨论】:
【参考方案3】:当您指定重定向 URI 时,http://localhost:3000 与 http://localhost:3000/ 不同(注意尾部斜杠)。
确保回调 URI 完全匹配。
【讨论】:
这就是答案,别看别处了。 :)【参考方案4】:对于 Drupagram 模块 (Drupal 7) 添加:http://localhost:3000/instagram/oauth
as redirect_uri
【讨论】:
【参考方案5】:对于遇到此问题且提供给 instagram 的重定向 uri 与您使用的完全相同的任何人,我发现有些用户在我的 instagram api 中输入我的网站地址为http://www.example.com/login
是http://example.com/login
。
然后我创建了一个 php 脚本来检测字符串 www
是否存在于我的 url 中,然后重新加载到同一页面但没有 www
。
if(strpos($_SERVER['HTTP_HOST'], 'www.') !== FALSE)
header("Location: ".str_replace('www.', '', $_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']));
【讨论】:
【参考方案6】:问题:Oauth2 Instagram API“重定向 URI 与注册的重定向 URI 不匹配
我的解决方案:请检查 ng-cordova-oauth.js 文件并检查其中的 instagram 功能。验证 redirect_uri 的值是否与在 Instagram 开发者控制台上注册您的应用程序相同。如果相同,则可以正常工作,否则会出现上述问题。
【讨论】:
【参考方案7】:"error_type": "OAuthException", "code": 400, "error_message": "重定向 URI 与注册的重定向 URI 不匹配"
如何从 Instagram 获取访问令牌
在instagramhttps://www.instagram.com/developer/注册沙盒客户端api时,您的网站url必须相同
这里我们使用了网址:https://adlivetech.com 有效的重定向 URI:https://adlivetech.com/
对于实时网站,您可以使用https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token轻松获取访问令牌
将上面的“CLIENT-ID”网址替换为您的客户 ID 替换上面的网址“REDIRECT-URI”重定向网址应该是你的域名,如:http://adlivetech.com
https://adlivetech.com/access_token=YOUR_ACCESS_TOken
【讨论】:
【参考方案8】:我在这个问题上搞砸了好久.. 也许它已经改变了,但是: http://localhost:3000/users/auth/instagram/int_callback 是最终对我有用的回调 URI。 我遇到的唯一问题是它完全是一个不正确的回调 uri,希望我在这里看到我应该专注于我的 Instagram 设置而不是修改我的代码.. 获取错误消息意味着其他一切都在工作(到目前为止),否则您将不会收到该特定错误消息。 祝你好运!! - 不要分心!
【讨论】:
【参考方案9】:这不是特定于 ruby 的,但对于其他与此搏斗的人来说,这就是让我通过它的原因(注意:以上答案中没有任何东西对我有用):
1. Edit your Client on Instagram Developer and uncheck Disable implicit OAuth.
2. Click Update Client to save it.
3. Now go to https://instagram.com/oauth/authorize/?client_id=[CLIENT_ID]&redirect_ur.... Just change [CLIENT_ID] and [REDIRECT_URI] with their values.
4. After that you will be redirected to [REDIRECT_URI]/#access_token=[ACCESS_TOKEN]. Get it and place it on the Instagram Access Token textbox.
(来源:https://www.drupal.org/project/instagram_feeds/issues/2140479)
【讨论】:
请您详细说明第 4 点。我已经完成了第 3 点【参考方案10】:...或者您可以按照此处的说明进行操作:
https://instagram.com/developer/authentication/?hl=en
请参阅“第一步:将您的用户引导至我们的授权 URL”部分。
只需提供您的 CLIENT_ID 和 REDIRECT_URI。
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
【讨论】:
以上是关于Oauth2 Instagram API“重定向 URI 与注册的重定向 URI 不匹配”的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法阻止硒被重定向到登录?不使用 api 抓取 Instagram
在未登录浏览器连接 Instagram 时,OAuth Instagram API 删除重定向 URL 中的参数
如何获取 URL Scheme myapp:// 以使用 Instagram API 重定向 uri
使用 Oauth2 在 Instagram 上发布图片 - PHP