Facebook登录:请确保您的redirect_uri与您在OAuth对话框中使用的重定向_uri相同

Facebook login: Please make sure your redirect_uri is identical to the one you used in the OAuth dialog

本文关键字:uri 对话框 相同 重定向 OAuth redirect 登录 Facebook 确保      更新时间:2023-09-26

所以我没有主意了,我不知道该检查或调试什么了,但在异常情况下,我得到了这个:

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.

以下是基本流程:

  1. 生成一个授权,为您提供code(用户将被重定向到Instagram以接受/拒绝请求的授权)
  2. 此代码可用于生成"短期访问令牌",而这正是出现问题的地方

对于第一点,您需要为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个小时后,我找到了这个错误的解决方案。

发生这种情况有两个原因。

  1. 正如我们在回应中看到的那样。只需确保在开发人员门户和代码中设置相同的URL
  2. IMP:FACEBOOK需要更改API响应。第二个原因是,你要确保使用Instagram应用程序机密和应用程序ID。我收到了同样的错误,因为我使用了错误的应用程序机密

必须遵循:官方FB文档