让我首先说,我已经寻找这个问题的答案很长一段时间了……

我试图设置Facebook OAuth与我的应用程序,这是在我的机器上本地开发。Facebook授权的一切都很完美,直到我从使用localhost转移到另一个域名(仍然是我机器的本地域名)。现在我得到如下错误。

不能加载URL:这个URL的域不包括在应用程序的 域。要加载此URL,请添加所有域和子域 在你的应用程序设置的应用程序域字段。

我的hosts文件包含127.0.0.1 domain.dev(完美工作)

我的重定向在我的应用程序(使用Socialite)是http://domain.dev/auth/facebook/callback

在我的Facebook应用程序设置…

我的应用域名是Domain .dev 我的网站网址是http://domain.dev/ 我的有效OAuth重定向uri是 http://domain.dev/auth/facebook/callback

出现错误消息时的URL是..

https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fdomain.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&state=0ztcKhmWwFLtj72TWE8uOKTcf65JmePtG95MZLDD

我不知道问题出在哪里。

屏幕截图1

屏幕截图2


当前回答

同样的Facebook错误也发生在我的生产环境中。原因是我在Facebook上注册了2个应用(Local和Production),但我将Local应用ID硬编码到源代码中,并忘记在部署前将其转换为Production应用ID。

最佳实践表明,你不应该将应用ID硬编码到源代码中,但如果你这样做了,也不要像我错误地那样不匹配你的各种Facebook应用ID。

其他回答

确保你的应用是公共的。 点击+添加产品 现在转到products => Facebook登录 现在做以下事情:

有效的OAuth重定向uri: example.com/

取消授权回调URL: https://example.com/facebookapp

In the App domain section, you are writing your app domain but you also need to add your login domain i.e. the name of html page where you ask user to login. In my case, I was testing it on localhost and the login route was localhost/login, If I only put http://localhost.com in App domain section, I get this error. But after adding http://localhost/login.com, the error was fixed. and also the App settings has changed in newer version of SDK, in which there is no option for OAuth redirect route. You've to assign the redirect route directly from server side, after successfully getting OAuth token.

同样的Facebook错误也发生在我的生产环境中。原因是我在Facebook上注册了2个应用(Local和Production),但我将Local应用ID硬编码到源代码中,并忘记在部署前将其转换为Production应用ID。

最佳实践表明,你不应该将应用ID硬编码到源代码中,但如果你这样做了,也不要像我错误地那样不匹配你的各种Facebook应用ID。

在我的情况下,我通过添加完整的URL解决了这个问题,而不仅仅是facebook要求的域名。我希望他们能重新命名,以便更清楚地说明。 所以有效的OAuth重定向uri应该是这样的: 前:https://www.mobile-battles.com 后:https://www.mobile-battles.com/register

我也有同样的问题。我通过将我的OAuth重定向URI作为参数添加到getAccessToken函数调用来解决它:

$redirectLoginHelper->getAccessToken("https://www.example.com/myfacebookcallback")

如果没有参数被发送到该函数,SDK将自行生成重定向URI,这应该可以工作,但在我的情况下,它没有。

希望这能帮助到一些人。