领英:无效的重定向URI。此值必须与API密钥注册的URL匹配。

28

我正在使用 'omniauth-linkedin-oauth2'。

当我用Linkedin登录时,遇到了以下错误:

无效的redirect_uri。此值必须与API密钥注册的URL匹配。

这是我的设置:

截图


API密钥和值,设置正确了吗? - Nithin
5
重定向URL应该改为http://localhost:3000/auth/linkedin/callback,这是OmniAuth策略的工作方式。接下来,您应该将站点打开为http://localhost:3000并尝试进行身份验证。 - Ilya Bodrov-Krukowski
@bodrovis兄弟帮我省了不少时间 :). 但是在使用Facebook gem 'omniauth-facebook'时,重定向URI http://localhost:3000 是正常工作的。 - Taimoor Changaiz
LinkedIn OAuth 2.0问题 - 无效的redirect_uri。此值必须与API密钥注册的URL匹配。请查看此链接是否有所帮助。 - Alan Dong
3
解决方法:在添加完URL后按下更新按钮 :) - Lodewijck
显示剩余2条评论
8个回答

32

我回到了领英开发者网站 (https://www.linkedin.com/secure/developer) 再次检查了我的设置。 API密钥、秘密密钥和OAuth 2.0重定向URL都匹配。

在网上搜索一些线索,但是找不到任何一个。
疯狂的问题:

然后我看到Owin在重定向URI中添加了一些额外的字符串“signin-linkedin”。当我解码URL时,我看到了这个http://localhost:54307/signin-linkedin 。我将此URL放置在LinkedIn开发人员网站中的OAuth 2.0重定向URL字段中。

这个链接对我很有帮助
https://naveengopisetty.wordpress.com/2014/09/15/linkedin-oauth-2-0-issue-invalid-redirect_uri-this-value-must-match-a-url-registered-with-the-api-key/


2
在URI的末尾添加“signin-linkedin”,就像这样:http://www.example.com/signin-linkedin,对我很有效! - zinczinc
我解决了那个错误,但你能告诉我如何在浏览器中打开登录界面而不是在网络选项卡中打开吗?我遇到了一个非常奇怪的问题,屏幕正在网络选项卡中打开,而不是在浏览器中打开。 - Prasanna
非常好。谢谢。 - Dr. MAF

7
您可以查看触发错误信息的URL。
例如,如果您正在使用Python的社交认证,URL将如下所示:
https://www.linkedin.com/uas/oauth2/authorization?scope=r_basicprofile+r_emailaddress&state=XXXXXX&redirect_uri=http://example.com.au/sa/complete/linkedin-oauth2/&response_type=code&client_id=YYYYYYY

所以你需要使用上面URL的这部分作为重定向URL。
http://example.com/sa/complete/linkedin-oauth2/


2

另一个解决方案是验证您一直在使用的client_id,因为随着重定向URI列表的每次更新,客户端ID也会更新。


1
谢谢,这对我有用。每当您更改redirect_uri时,clientid也会更改,因此不要忘记复制新的client id。感谢您的帮助。 - adi_tdkr

0
确保在重定向URL中同时添加包含和不包含尾部斜线的两个版本。
http://localhost:8000/oauth/complete/linkedin-oauth2
http://localhost:8000/oauth/complete/linkedin-oauth2/

0
我在尝试从 Zurb Reveal 模态弹出窗口进行授权时遇到了这个问题。在我的情况下,问题是在弹出窗口中显示的页面的 URL 不在 LinkedIn 开发人员站点上的 OAuth2 重定向 URL 列表中。
这很容易被忽略,因为模态框中页面的 URL 不是当前浏览器地址栏中显示的 URL。一旦我添加了在弹出窗口中显示的页面的 URL,它就可以工作了。

0
经过数小时的努力,我终于找到了解决方案。如果你遇到错误,不用担心,只需检查URL并查找redirect_uri。将其值复制并粘贴到LinkedIn开发者帐户的oauth2重定向字段中即可。

0
值得一提的是,在使用库来处理oauth时,有些库会忽略所使用的协议(或者至少需要进一步参数化)。例如,我将Linkedin https://example/callback 作为oauth2 url,但是该库发送的请求中参数为http://example/callback

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接