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

Posted

技术标签:

【中文标题】Facebook 登录:无法加载 URL 此 URL 的域未包含在应用程序的域中【英文标题】:Facebook Login :Can't Load URL The domain of this URL isn't included in the app's domains 【发布时间】:2016-10-05 18:05:35 【问题描述】:

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

我有一个使用 Oauth 身份验证嵌入 Facebook 登录的 Web 应用程序。我使用以下代码寻求帮助Facebook login with 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**

截图:

所以,我只想知道为什么我会遇到这个问题。设置部分有什么我遗漏的吗?

更新

代码流:

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

【问题讨论】:

您是否在应用帐户的“应用域”中添加了域enggheads.com。您所关注的链接的快照显示 localhost。 你检查过这个吗? ***.com/questions/37063685/… @Saurabh ,是的,我已经改了 @Polichronis 是的,我已经检查过了。这是我关注的第一个链接。重新检查了我所有的设置,但仍然找不到真正的原因 【参考方案1】:

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

解决方案 1:

Facebook 现在将某些功能用作插件。在左侧选择产品并添加产品。然后选择 Facebook 登录。从那里非常直接,您会看到所有 Oauth 选项。

或,

选择产品并添加产品。然后选择 Facebook 登录。

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

解决方案 2:

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

能否请您在此页面重新检查您的APP的设置?

https://developers.facebook.com/apps

    选择正确的App,点击编辑按钮; 检查 URL 和路径是否正确输入并指向 您安装了 Ultimate Facebook 插件的网站。

归功于Lei lionel

更新1:

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

    Extend Facebook access token (make it 60days last) Expiration and Extension of Access Tokens

资源链接:

    Generate "never-expire" access token for Facebook Page Do Facebook Oauth 2.0 Access Tokens Expire?

更新2:

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

答:

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

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

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

如果您的应用是这样设置的,则应使用此处描述的流程从每个客户端获取访问令牌,以避免触发 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":"..."

【讨论】:

很高兴你能回答。检查我在应用程序上的设置。我再次在问题中对其进行编辑。 facebook.com/… @Vartika 我认为您的访问令牌已经过期。请查看 UPDATED1 部分。 先生,这个问题怎么会自己产生呢?因为它从过去 2 个月开始工作得非常好。我仍然会调查这个问题。我只想再问一件事,应用程序域错误是否可能与访问令牌过期时间有关? 没有与访问令牌相关的问题。我正确阅读了访问令牌的文档。我们正在使用安全的方式。 ISSUE :--- 重定向 uri 。不知道为什么,但是 uri 没有采用我们网址的哈希值。您一定已经在我们的重定向 uri 中注意到了它,我在 #!login 等问题中给出了...希望它能在我们的生产模式项目上正常工作。谢谢【参考方案2】:

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

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

【讨论】:

【参考方案3】:

我的问题在于我没有指定redirect_uri,如果用户没有使用 Facebook 登录,这是必需的。

【讨论】:

【参考方案4】:

设置否:对重定向 URI 使用严格模式

同时保留有效的 OAuth 重定向 URI:与您的主 url 相同

【讨论】:

欢迎来到 ***!请查看how to write a good answer上的指南【参考方案5】:

如果您的重定向 uri 中有动态查询参数,那么这些参数应该放在授权请求中的 state 参数中。

有关详细信息,请查看我的answer 到类似帖子。

【讨论】:

以上是关于Facebook 登录:无法加载 URL 此 URL 的域未包含在应用程序的域中的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Auth:无法加载 URL:此 URL 的域不包含在应用程序的域中

Facebook Twitter Google line 登录之 fb登录

Facebook 登录页面为空,无法加载

Facebook 登录当前无法在 Flutter 中用于此应用

本地主机上 Cognito 托管 UI 的 Facebook 登录设置

使用 PHP SDK 登录 Facebook 应用程序不起作用:此 URL 的域不包含在应用程序的域中 [重复]