给定的URL未被应用程序配置允许。

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应用程序设置

1
可能是重复的问题:如何在开发Facebook图形网站时使用本地主机? - Alexei Levenkov
1
@AlexeiLevenkov 谢谢,但我甚至不知道自己在使用图形 API :P 感谢您让我知道..现在我可以更好地搜索我的查询了:D - 1Mayur
我收到了一条信息 - URL未被应用程序的设置允许。它必须与网站URL或画布URL匹配,或者该域必须是应用程序域之一的子域。 - Bhavik Ambani
10个回答

61
您需要填写值为http://localhost/OfferDrive/Facebook登录网站,以允许Facebook对来自JavaScript SDK的请求进行身份验证,并确认其来源正确。请保留HTML标记。

我猜它起了作用,至少现在我得到了一些语法错误 ;) 我会解决它并让你知道。 - 1Mayur
如果您遇到其他问题,请发帖说明。 - Anvesh Saxena
如何在发布到墙上时上传图片?我收到了“FBCDN图像不允许在流中”的错误。 - 1Mayur
我猜你正在尝试发布带有URL的图片,例如_https://fbcdn-sphotos-b-a.akamaihd.net_。如果您尝试从Facebook的内容传递网络或FBCDN发布图像链接,则似乎存在一些问题。 - Anvesh Saxena
1
同样的问题:不允许使用顶级域名。 - Andrade
1
我也收到了顶级域名错误。为了开发目的,创建一个单独的Facebook应用程序,并在单击“添加平台”->“网站”后设置其“网站URL”(而不是“应用程序域”)对我有用。 - Taylor D. Edmiston

44

更新Anvesh Saxena的回答(正确但已过时,因为FB应用程序接口已更改):

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

新的FB设置截图

重要提示: 为了使此功能正常工作,您需要在本地开发中使用您的应用程序URL的子域。您可以通过修改开发计算机上的hosts文件以使用您网站的不存在的子域名(例如local.mycoolwebsite.com)轻松实现此目的。如果您不熟悉如何执行此操作,请搜索“编辑hosts文件”+ 您的平台(例如mac/windows)。


另一个可能的解决方案,正如Heroku所提到的,是为开发创建一个单独的Facebook应用程序(请参见https://devcenter.heroku.com/articles/facebook#1-creating-a-development-facebook-app)。请注意,对我来说,使用如上所示的127.0.0.1:5000在Facebook上返回了一个错误,但localhost:5000运行良好。 - Taylor D. Edmiston
我收到了一条消息 - URL未被应用程序的设置允许。它必须与网站URL或画布URL匹配,或者该域必须是应用程序域的子域之一。 - Bhavik Ambani
我原本都有这些,但是错误地使用了“...heroku.com”而不是“...herokuapp.com”。当我修复了这些问题并更新了所有内容以使用“https://”时,它开始正常工作了。 - Seth

18

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


3
谢谢!对我有用,我添加了localhost和localhost:8100(进行Ionic开发)。 - George Kagan
谢谢!我在“基本”页面上尝试了各种组合,甚至没有注意到“高级”页面上的OAuth字段。 - Madeline Trotter
我们将应用程序的域名更改为子域名。尽管该子域名已经得到授权,但这仍是必需的。 - tvanfosson
1
非常感谢。我已经加入了localhost:3000(Node.JS),而且它成功运行了!再次感谢。 - Enrico Giurin

9
  • 进入Facebook开发人员仪表盘
  • 点击我的应用并从下拉菜单中选择您的应用。
    (如果您还没有创建任何应用,请选择“添加新应用”以创建一个新的应用)。
  • 转到应用设置>基本选项卡,然后在底部部分单击“添加平台”。
  • 选择“网站”,然后将网站添加到登录的站点URL(例如mywebsite.com
  • 如果您正在本地测试,则甚至可以只提供应用程序的本地主机URL。
    例如:http://localhost:8080/myfbsampleapp
  • 保存更改,现在您可以从http://localhost:8080/myfbsampleapp访问Facebook信息

获取消息 - URL不被应用程序的设置所允许。它必须与网站URL或画布URL匹配,或者该域必须是应用程序域的子域之一。 - Bhavik Ambani
@BhavikAmbani,你试过我的答案了吗? - Lucky
@BhavikAmbani 你在哪个步骤收到了这条消息?请仔细验证你在页面中输入的网站URL。 - Lucky
@Lucky 我已经验证了,也收到了相同的消息。 - Bhavik Ambani
@BhavikAmbani 那我猜你应该用你的问题描述提出一个新问题。 - Lucky
显示剩余2条评论

2
  1. 从位于左上角的应用名称菜单项中创建一个测试应用。
  2. 在新测试应用的设置部分中:将'http://localhost:3000'添加到网站URL并将'localhost'添加到应用程序域。
  3. 使用新的Facebook APP Id更新您的应用程序。
  4. 在您的应用程序中使用Facebook sdk v2.2或最新版本。

2

关于munsellj的更新..

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


1

1

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


问题解决了!我忘记改变应用程序ID,开始有点担心。 - Henry

1
注意,localhost 是 FB 允许在此处使用的特殊字符串。如果您没有在 localhost 下配置调试环境,则据我所知,您将不得不将其推到该名称下。

1
有时会出现旧JavaScript SDK的错误。如果您将JavaScript文件保存在本地,请更新它。我更喜欢始终从Facebook服务器加载它。

我按照以上所有建议尝试了,但都没有起作用。直到我将我的应用程序直接指向 Facebook CDN,它才终于起作用了(本地使用的是旧版本)。 - Neil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接