java - Facebook 登录 :Can't Load URL The domain of this URL isn't included in the app's domains

标签 java facebook facebook-graph-api oauth

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

我有一个 Web 应用程序,我在其中使用 Oauth 身份验证嵌入了 Facebook 登录。我使用以下代码寻求帮助 Facebook login with Java

直到上个月它工作正常,但几天后我们不断收到错误:-

Can't Load URL The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and subdomains of your app to the App Domains field in your app settings.

**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

所以,我只想知道我遇到这个问题的原因是什么。设置部分是否缺少某些内容?

更新

代码流:

第一步。在按钮上点击 url 调用--->

"http://www.facebook.com/dialog/oauth?" + "client_id="
                    + FB_APP_ID + "&redirect_uri="
                    + URLEncoder.encode(REDIRECT_URI, "UTF-8")
                    + "&scope=public_profile ";

我在这部分收到错误消息 Can't Load URL 此 URL 的域不包含在应用的域中。为了能够加载此 URL,请将您应用的所有域和子域添加到应用设置中的“应用域”字段。

最佳答案

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

解决方案一:

Facebook 现在将一些功能定位为插件。在左侧选择产品并添加产品。然后选择 Facbook 登录。从那里非常直接,您会看到所有 Oauth 选项都出现了。

或者,

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

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

方案二:

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

能否请您重新检查您的应用程序在此页面中的设置?

https://developers.facebook.com/apps

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

归功于 Lei lionel

更新1:

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

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

资源链接:

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

更新2:

I just want to ask 1 thing more is it possible the app domain error has smthng to do with access token expiration time?

答案:

从服务器端长期 token 生成长期用户 token

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

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

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

在高层次上,这是您从客户端获取长期 token 的方式:

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

获取代码

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

https://graph.facebook.com/oauth/client_code?access_token=...&client_secret=...&redirect_uri=...&client_id=...

您需要输入:access_token、client_secret、redirect_uri 和 client_id。

响应将是:

响应看起来像这样:

{"code": "...."}

兑换访问 token 的代码

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

https://graph.facebook.com/oauth/access_token?code=...&client_id=...&redirect_uri=...&machine_id= ...

调用需要以下参数:

client_id - Yes

code - Yes

redirect_uri - Yes

machine_id - No

响应将如下所示:

{"access_token":"...", "expires_in":..., "machine_id":"..."}

关于java - Facebook 登录 :Can't Load URL The domain of this URL isn't included in the app's domains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37652221/

相关文章:

java - GsmCellLocation 返回相同的值

java - 在 Java 中收集应用程序指标(可选 .Net)

facebook - 获取页面的个人资料图片

php - 计算对象数组的列中某个值的出现次数

java - 如何将 JOGL 与 NetBeans 平台捆绑在一起?

java - javafx 空指针的initialize()方法

javascript - 关于 Facebook Timer 的一些困扰我的事情

javascript - 单击 Facebook 页面上的按钮后执行的操作

facebook - 如何获取 fb :app_id for facebook meta

Facebook 图形 API 返回 false