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

2022-09-03 01:56:02

我知道很多这样的问题已经被问到很多尝试,然后在发布问题后。我的问题仍未解决。

我有一个Web应用程序,我使用Oauth身份验证嵌入了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**

截图:

DashBoard

Basic Setting Of App

Fblogin setting added from add product on right panel

所以,我只想知道为什么我面临这个问题的问题是什么。设置部分是否遗漏了什么?

更新

代码流 :

步骤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,请将应用的所有域和子域添加到应用设置中的“应用域”字段中。


答案 1

我想分享2种解决方案的方法。希望它能解决您的问题。

解决方案 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插件的网站。

功劳归雷翁内尔

更新1:

我认为你的访问令牌已过期。因此,需要扩展访问令牌。为此,请通过此链接:

  1. 扩展Facebook访问令牌(使其持续60天)
  2. 访问令牌的过期和扩展

资源链接:

  1. 为 Facebook 公共主页生成“永不过期”访问令牌
  2. Facebook Oauth 2.0 Access Tokens 會到期嗎?

更新2:

我只想再问1件事,应用程序域错误是否有可能与访问令牌过期时间有关?

答:

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

Facebook 有一个高级选项,用于为以下应用获取长期访问令牌:

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

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

在较高级别,这是从客户端获取长期令牌的方法:

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

获取代码

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

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":"..."}

答案 2

我遇到了这样的麻烦,因为在oauth重定向URL中,我只放了:-http://example.com/#/redirect-url 而我也不得不把:-http://example.com

即使我只想重定向到/#/redirect-url。也许ajax网站会引起麻烦。