Facebook登录:无法加载URL此URL的域未包含在应用程序的域中
我知道很多这样的问题在发布问题之后已经被尝试了很多。 我的问题仍未得到解决。
我有一个Web应用程序,我使用Oauth身份validation嵌入Facebook登录。 我使用以下代码来帮助Facebook使用Java登录
直到上个月它工作正常,但从几天我们连续得到错误: –
无法加载URL此URL的域未包含在应用程序的域中。 要加载此url,请将应用的所有域和子域添加到应用设置中的应用域名字段中。
**Setting used are following:- Website url : **https://www.enggheads.com/** App Domain : **enggheads.com** Redirect uri : 1. https://www.enggheads.com/#!login 2. https://www.enggheads.com/#!signup**
截图:
所以,我只想知道我遇到这个问题的原因是什么。 我在设置部分缺少哪些内容?
UPDATE
代码流程:
步骤1。 在按钮上单击名为—>的URL
"http://www.facebook.com/dialog/oauth?" + "client_id=" + FB_APP_ID + "&redirect_uri=" + URLEncoder.encode(REDIRECT_URI, "UTF-8") + "&scope=public_profile ";
我收到错误的部分,它给出了错误无法加载URL此URL的域未包含在应用程序的域中。 要加载此url,请将应用的所有域和子域添加到应用设置中的应用域名字段中。
我想分享2种解决方案。 希望它能解决你的问题。
解决方案1:
Facebook现在将一些function作为插件。 在左侧选择产品并添加产品。 然后选择Facbook Login。 从那里很直接,你会看到所有的Oauth选项出现。
要么,
选择产品并添加产品。 然后选择Facbook Login。
然后将http:// localhost:3000 /添加到'Valid OAuth redirect URIs'
字段中,然后一切正常。
方案2:
如果您在Facebook中创建应用程序时输入了错误的详细信息,通常会发生这种情况。 或者您是否更改了现有应用程序的URL?
你能否在这个页面上重新检查你APP的设置?
https://developers.facebook.com/apps
- 选择正确的应用程序,然后单击编辑按钮;
- 检查URL和路径是否正确输入,并指向您已安装Ultimate Facebook插件的站点。
感谢Lei lionel
UPDATE1:
我认为您的访问令牌已经过期 。 所以你需要扩展访问令牌。 为此,请通过以下链接:
- 扩展Facebook访问令牌(最后60天)
- 访问令牌的到期和扩展
资源链接:
- 为Facebook页面生成“永不过期”的访问令牌
- Facebook Oauth 2.0访问令牌是否过期?
UPDATE2:
我只是想问一件事是否有可能app域错误与访问令牌到期时间有关?
答:
从服务器端长生命令牌生成长期用户令牌
Facebook有一个高级选项,可以获取以下应用程序的长期访问令牌:
- 拥有自己的身份validation系统(例如使用用户名/密码)
- 在他们的服务器上存储Facebook访问令牌,供使用它的人发送给不同的客户端(浏览器或本机移动应用程序)
- 从所有这些客户端进行API调用
如果您的应用程序设置如此,则应使用此处描述的过程从每个客户端获取访问令牌,以避免触发Facebook的自动垃圾邮件系统。 最终结果是每个客户端都有自己的长期访问令牌。
在较高的层次上,这是您从客户端获取长期令牌的方法:
- 使用有效且当前的长期令牌从服务器调用Facebook的服务器以生成代码。 (这假设您已经通过Facebook登录获得了长期令牌。如果您使用的令牌无效或已过期,您必须通过再次使用您的应用登录来获取新令牌。)
- 安全地将该代码发送给客户端。
- 然后,客户端将代码交换为长期令牌。
- 客户端可以使用长期令牌发布故事或查询数据。
获取代码
使用长期用户访问令牌,调用以下端点:
https://graph.facebook.com/oauth/client_code?access_token=...&client_secret=...&redirect_uri=...&client_id=...
您需要提供输入: access_token, client_secret, redirect_uri and client_id.
回复将是:
响应将类似于:
{"code": "...."}
兑换访问令牌的代码
一旦从Facebook的服务器检索到代码,您就需要通过安全通道将其发送到客户端。 完成后,您需要从客户端向此端点发出请求:
https://graph.facebook.com/oauth/access_token?code=...&client_id=...&redirect_uri=...&machine_id= ...
该调用需要以下参数:
client_id – 是的
代码 – 是的
redirect_uri – 是的
machine_id – 没有
响应将如下所示:
{"access_token":"...", "expires_in":..., "machine_id":"..."}
我有这样的麻烦,因为在oauth重定向url中我只提出: – http://example.com/#/redirect-url而我还必须放: – http://example.com
即使我只想重定向到/#/ redirect-url。 也许ajax网站会引起麻烦。
我的问题在于我没有指定redirect_uri
,如果用户没有登录Facebook,则需要使用redirect_uri
。
在Facebook应用的客户端OAuth设置的有效OAuth重定向URI文本框中粘贴您要使用Facebook登录按钮的页面url。然后它将完美地运行。
设置否:对重定向URI使用严格模式
同时保留有效OAuth重定向URI:与主url相同
如果您的重定向uri中有动态查询参数,那么这些参数应该放在授权请求中的state参数中。
有关详细信息,请查看我对类似post的回答 。