Facebook登录:无法加载URL此URL的域未包含在应用程序的域中

Var*_*ika 17 java facebook oauth facebook-graph-api

我知道很多这样的问题在发布问题之后已经被尝试了很多.我的问题仍未得到解决.

我有一个Web应用程序,我使用Oauth身份验证嵌入Facebook登录.我使用以下代码来帮助Facebook使用Java登录

直到上个月它工作正常,但从几天我们连续得到错误: -

无法加载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**
Run Code Online (Sandbox Code Playgroud)

截图:

仪表板

应用程序的基本设置

在右侧面板上添加产品添加了Fblogin设置

所以,我只想知道我遇到这个问题的原因.设置部分中是否有我遗漏的内容?

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 ";
Run Code Online (Sandbox Code Playgroud)

我收到错误,因为它提供了错误 无法加载URL此URL的域未包含在应用程序的域中.要加载此网址,请将应用的所有域和子域添加到应用设置中的应用域名字段中.

Sky*_*ker 18

我想分享两种解决方案.希望它能解决你的问题.

解决方案1:

Facebook现在将一些功能作为插件.在左侧选择产品并添加产品.然后选择Facbook Login.从那里很直接,你会看到所有的Oauth选项出现.

要么,

选择产品并添加产品.然后选择Facbook Login.

然后将http:// localhost:3000 /添加到该字段'Valid OAuth redirect URIs',然后一切正常.

方案2:

如果您在Facebook中创建应用程序时输入了错误的详细信息,通常会发生这种情况.或者您是否更改了现有应用程序的URL?

你能否在这个页面上重新检查你的APP的设置?

https://developers.facebook.com/apps

  1. 选择正确的应用程序,然后单击编辑按钮;
  2. 检查URL和路径是否正确输入,并指向您已安装Ultimate Facebook插件的站点.

幸得雷莱昂内尔

UPDATE1:

我认为您的访问令牌已经过期.所以你需要扩展访问令牌.为此,请通过以下链接:

  1. 扩展Facebook访问令牌(最后60天)
  2. 访问令牌的到期和扩展

资源链接:

  1. 为Facebook页面生成"永不过期"的访问令牌
  2. Facebook Oauth 2.0访问令牌是否过期?

UPDATE2:

我只是想问一个问题是,app域错误是否可能与访问令牌到期时间有关?

答:

从服务器端长生命令牌生成长期用户令牌

Facebook有一个高级选项,可以获取以下应用程序的长期访问令牌:

  1. 拥有自己的身份验证系统(例如使用用户名/密码)
  2. 在他们的服务器上存储Facebook访问令牌,供使用它的人发送给不同的客户端(浏览器或本机移动应用程序)
  3. 从所有这些客户端进行API调用

如果您的应用程序设置如此,则应使用此处描述的过程从每个客户端获取访问令牌,以避免触发Facebook的自动垃圾邮件系统.最终结果是每个客户端都有自己的长期访问令牌.

在较高的层次上,这是您从客户端获取长期令牌的方法:

  1. 使用有效且当前的长期令牌从服务器调用Facebook的服务器以生成代码.(这假设您已经通过Facebook登录获得了长期令牌.如果您使用的令牌无效或已过期,您必须通过再次使用您的应用登录来获取新令牌.)
  2. 安全地将该代码发送给客户端.
  3. 然后,客户端将代码交换为长期令牌.
  4. 客户端可以使用长期令牌发布故事或查询数据.

获取代码

使用长期用户访问令牌,调用以下端点:

https://graph.facebook.com/oauth/client_code?access_token=...&client_secret=...&redirect_uri=...&client_id=...
Run Code Online (Sandbox Code Playgroud)

你需要提供输入: access_token, client_secret, redirect_uri and client_id.

回复将是:

响应将类似于:

{"code": "...."}
Run Code Online (Sandbox Code Playgroud)

兑换访问令牌的代码

一旦从Facebook的服务器检索到代码,您就需要通过安全通道将其发送到客户端.完成后,您需要从客户端向此端点发出请求:

https://graph.facebook.com/oauth/access_token?code=...&client_id=...&redirect_uri=...&machine_id= ...
Run Code Online (Sandbox Code Playgroud)

该调用需要以下参数:

client_id - 是的

代码 - 是的

redirect_uri - 是的

machine_id - 没有

响应将如下所示:

{"access_token":"...", "expires_in":..., "machine_id":"..."}
Run Code Online (Sandbox Code Playgroud)