62

我在我的html页面中使用了这个......

<script>     
window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : 'xxxxxxxxxxxxxx', // App ID from the App Dashboard
      status     : true, // check the login status upon init?
      cookie     : true, // set sessions cookies to allow your server to access the session?
      xfbml      : true  // parse XFBML tags on this page?
    });

    // Additional initialization code such as adding Event Listeners goes here
};

// Load the SDK's source Asynchronously
// Note that the debug version is being actively developed and might 
// contain some type checks that are overly strict. 
// Please report such bugs using the bugs tool.
(function(d, debug){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all" + (debug ? "/debug" : "") + ".js";
     ref.parentNode.insertBefore(js, ref);
}(document, /*debug*/ false));

 function shareOnFb(action, msg){
    FB.ui({ 
        method: action, 
        message: msg
    });
 }
</script>

当我每次尝试调用任何 FB 方法时,它都会在我的控制台中显示

应用程序配置不允许给定 URL。:应用程序的设置不允许一个或多个给定 URL。它必须与网站 URL 或画布 URL 匹配,或者域必须是应用程序域之一的子域。

这是我的 fb 应用程序设置.. 我需要在这里更改一些东西吗,我暂时在本地运行我的网站,所以我尝试添加

localhost/OfferDrive/ 到此页面上的应用程序域,但它说错误,它不是一个有效的域

FB 应用程序设置

4

10 回答 10

61

您需要使用 Facebook 登录的值填充网站的值http://localhost/OfferDrive/,以允许 Facebook 验证来自 JavaScript SDK 的请求来自正确的位置

于 2013-01-23T07:06:32.600 回答
44

更新 Anvesh Saxena 的答案(正确但已过时,因为 FB App 界面已更改):

在您的 FB 应用程序配置中,您需要添加一个带有您网站 URL 集的网站平台。然后您可以将我设置的应用程序域添加到我们网站的基本域(例如,对于类似 的 URL http://www.mycoolwebsite.com,只需使用mycoolwebsite.com)。

新的 FB 设置截图

重要提示:为了使其正常工作,您需要使用应用 URL 的子域进行本地开发。您可以通过修改开发计算机上的主机文件以使用您网站不存在的子域(例如local.mycoolwebsite.com. 如果您不熟悉如何执行此操作,只需为您的平台(例如 mac/windows)谷歌“编辑主机文件”。

于 2014-04-23T01:30:45.957 回答
18

设置 -> 高级,将 url 添加到“有效的 OAuth 重定向 URI”。这对我有用。

于 2014-10-20T01:51:20.063 回答
9
  • 转到Facebook 的开发者仪表板
  • 单击My Apps并从下拉列表中选择您的应用程序。
    (如果您尚未创建任何应用程序,请选择“添加新应用程序”以创建新应用程序)。
  • 转到App Setting > Basic Tab然后单击底部的“添加平台”。
  • 选择“网站”并添加要登录的网站Site URL(例如mywebsite.com
  • 如果您在本地进行测试,您甚至可以只提供应用程序的 localhost URL。
    例如。http://localhost:8080/myfbsampleapp
  • 保存更改,您现在可以从以下位置访问 Facebook 信息http://localhost:8080/myfbsampleapp
于 2015-02-25T11:29:42.080 回答
2

对 munsellj 的更新的更新..

我只需将 localhost:3000 添加到“网站 URL”选项并将“应用程序域”框留空即可在开发中工作。正如 munsellj 提到的,请确保您已添加网站平台。

于 2014-05-22T14:51:11.613 回答
2
  1. 从位于左上角的应用名称的菜单项中,创建一个测试应用。
  2. 在新测试应用程序的设置部分:将“ http://localhost:3000 ”添加到网站 url,并将“localhost”添加到应用程序域。
  3. 使用新的 Facebook APP ID 更新您的应用
  4. 使用 Facebook sdk v2.2 或您应用中的任何最新版本。
于 2015-02-26T16:59:38.110 回答
1

注意,localhost是 FB 允许的特殊字符串。如果您没有在 localhost 下配置调试环境,那么据我所知,您必须将其推到该名称下。

于 2013-08-14T17:24:24.013 回答
1

有时旧的 javascript sdk 会发生此错误。如果您在本地保存 javascript 文件。更新它。我更喜欢一直从 facebook 服务器加载它。

于 2014-02-18T07:04:13.877 回答
1

其他答案中缺少的是如何允许 localhost(或 0.0.0.0 或其他)作为 oauth 回调 url。这是解释。 如何将 localhost:3000 添加到 Facebook 应用程序进行开发

于 2014-05-01T01:01:42.637 回答
1

发生这种情况的另一个原因是如果您发送了错误的 appId。如果您有一个开发应用程序和一个生产应用程序,这可能会在早期开发中发生。如果您为 dev 硬编码 appId 并推送到 prod,这将显示出来。

于 2014-08-23T04:42:01.413 回答