Facebook登录:请确保您的redirect_uri与您在OAuth对话框中使用的重定向_uri相同
Facebook login: Please make sure your redirect_uri is identical to the one you used in the OAuth dialog
所以我没有主意了,我不知道该检查或调试什么了,但在异常情况下,我得到了这个:
string(188203) "Facebook'FacebookAuthorizationException Object
(
[statusCode:Facebook'FacebookRequestException:private] => 400
[rawResponse:Facebook'FacebookRequestException:private] => {"error":{"message":"Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request","type":"OAuthException","code":100,"fbtrace_id":"DqCCKoiN0r4"}}
[responseData:Facebook'FacebookRequestException:private] => Array
(
[error] => Array
(
[message] => Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request
[type] => OAuthException
[code] => 100
[fbtrace_id] => DqCCKoiN0r4
)
)
[message:protected] => Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request
[string:Exception:private] =>
[code:protected] => 100
您可以在转到https://developers.facebook.com/apps选择您的应用程序。
在产品>Facebook登录>设置下
- 启用嵌入式浏览器OAuth登录
- 设置有效的OAuth重定向URI
您可以使用重定向URI验证器验证重定向URI。
您只能使用https URI。还可以在"设置">"基本">"应用程序域"中设置"应用程序域名"
在重定向URI 的末尾尝试/
在我的情况下,我在任何地方都使用https://localhost
,但不知何故,当获得指定https://localhost/
的访问令牌时,它起了作用。
尽管听起来很荒谬,但请验证您使用的是正确的app_secret。
Facebook会给你这个,而不是在响应中说"无效秘密"
我相信你在Facebook应用程序设置和Oauth API代码中使用了不同的redirect_uri
。这就是你犯这个错误的原因。
对于facebook登录,您必须将相同的redirect_uri设置为两个位置。
请确保其与FB设置完全相同。
对我来说https://localhost:3000/在我的设置中,但是https://localhost:3000在我的获取访问令牌调用中,这就是错误的来源!
我遇到了同样的问题,没有任何答案帮助我,然后我尝试制作另一个Facebook应用程序,它解决了我的问题!我的意思是,你必须为Facebook OAuth使用一个应用程序,并为Instagram OAuth制作另一个。似乎Facebook在一个应用程序中同时使用这两种功能时存在问题。
在解决了一天多的问题后,发现我的错误是最后应用程序中的一个"/"(斜杠)url。
如果其他人有这个问题,并且无法解决,您的redirect_uri需要有一个"最后。当你把redirect_uri放在应用程序设置中时,Facebook会自动添加一个。如果不添加"/"在您的代码中,当您尝试获取令牌时,它会给您这个错误。这就是我的情况。
例如:redirect_uri=";https://myserver.com:4429"
应该是
redirect_uri=";https://myserver.com:4429/"
我终于做到了,在我的情况下,我使用的是Instagram Oauth API,但我相信逻辑是一样的,你可以在这里找到完整的流程:https://developers.facebook.com/docs/instagram-basic-display-api/guides/getting-access-tokens-and-permissions.
以下是基本流程:
- 生成一个授权,为您提供
code
(用户将被重定向到Instagram以接受/拒绝请求的授权) - 此代码可用于生成"短期访问令牌",而这正是出现问题的地方
对于第一点,您需要为Instagram提供redirect_uri
。当你想完成第二点时,你需要向Instagram发出POST
请求,并附上redirect_uri
。
我原以为两个redirect_uri
在两个步骤之间可能不同,但事实并非如此。这就是我的错误所在:我第一步想要这样的东西:https://my.domain/short-lived-token
,第二步想要这样:https://my.domain/short-lived-token-v2
,但例如,当我用https://my.domain/generate-access-token
同时尝试时,它成功了。
希望它能帮助你们,因为我在网上找不到任何东西。
这意味着你传递给FB的重定向URI(通常在查询字符串中)与你在应用程序设置中设置的不匹配。
也可能是因为多个斜杠,例如:
https://yoursite.com/auth/facebook/callback -> that's the one you added in the app settings
https://yoursite.com//auth/facebook/callback -> that's what you actually send
对我来说,它通过替换来工作
callbackURL: "api/auth/facebook/redirect/",
至
callbackURL: "http://localhost:3000/api/auth/facebook/redirect/",
在new FacebookStrategy
中,
长期陷入同一问题。当重定向url不匹配、不存在或在字段中格式错误(额外空格或//)时,无论是在facebook应用程序设置中,还是在您调用API时,您都会收到此错误
解决方案
对我有效的是,当你添加重定向URl时,你可以在有效的重定向身份验证字段uf中检查它,当按下时它不显示有效,而不是该URl是正确的
最新修复:
在发送了3个小时后,我找到了这个错误的解决方案。
发生这种情况有两个原因。
- 正如我们在回应中看到的那样。只需确保在开发人员门户和代码中设置相同的URL
- IMP:FACEBOOK需要更改API响应。第二个原因是,你要确保使用Instagram应用程序机密和应用程序ID。我收到了同样的错误,因为我使用了错误的应用程序机密
必须遵循:官方FB文档
- 着色引导框对话框
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- CKeditor:更改对话框中的默认选择选项
- 搜索api在mac上显示对话框
- 使用密码对话框Javascript请求帮助
- CKEditor v4:自制插件中对话框的动态标题
- 删除确认对话框在第一次单击时不起作用
- 使用jquery对话框中的箭头键
- 获取打开jquery对话框的button的id
- 是否可以用JavaScript显示等效的文件夹对话框
- 我怎么能让jQuery对话框表现得像Javascript警报
- 如何在页面重新加载时显示jquery ui对话框
- 打开相对于鼠标位置的CSS3/HTML5模式对话框
- javascript确认对话框有时会不断出现
- 如何为javascript方法放入jquery确认对话框
- Jquery UI对话框不会消失
- 如何从自定义对话框编辑数据网格中的选定行
- OnsenUI、Angular和在警报对话框后刷新UI组件
- jQuery UI对话框错误,按钮导致HierarchyRequestError
- 是否可以将JXBrowser显示的JS确认对话框的结果返回到调用它的JS部分