给定的URL不被应用程序configuration所允许

我在我的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是不允许的应用程序configuration:一个或多个给定的URL是不允许的应用程序的设置。 它必须与网站url或Canvasurl匹配,或者该网域必须是其中一个应用网域的子网域。

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

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

fb应用程序设置

您需要使用值为http://localhost/OfferDrive/ Facebooklogin名填写Website的值,以允许Facebookvalidation来自JavaScript SDK的请求是否来自正确的地方

更新到Anvesh Saxena的答案(正确,但过时FB应用程序界面已更改):

在您的FB应用程序configuration中,您需要添加一个网站平台以及您网站的url集。 然后,您可以将我设置的应用域添加到我们网站的基本域(例如,像http://www.mycoolwebsite.com这样的URL,只需使用mycoolwebsite.com )即可。

新的FB设置截图

重要提示:为了使这个工作,你需要使用你的应用程序的URL的子域用于你的本地开发。 您可以通过在开发计算机上修改您的主机文件来使用您网站上不存在的子域名(如local.mycoolwebsite.com 。 只是谷歌“编辑主机文件”为您的平台(如Mac / Windows),如果你不熟悉如何做到这一点。

设置 – >高级,将url添加到“有效的OAuthredirectURI”。 这对我有用。

  • 转到Facebook的开发人员仪表板
  • 点击My Apps然后从下拉列表中select您的应用。
    (如果您还没有创build任何应用程序,请select“添加新应用程序”以创build新的应用程序)。
  • 进入App Setting > Basic Tab ,然后点击底部的“添加平台”。
  • select“网站”,并添加网站作为Site URLlogin(例如mywebsite.com
  • 如果你在本地testing,你甚至可以给你的应用程序的本地主机URL。
    例如。 http://localhost:8080/myfbsampleapp
  • 保存更改,现在可以从http://localhost:8080/myfbsampleapp访问Facebook信息

munsellj的更新更新..

通过将localhost:3000添加到“网站URL”选项并将“应用程序域”框保留为空,我得到了这个开发工作。 正如munsellj所提到的,确保你已经添加了一个网站平台。

  1. 从位于左上angular的应用程序名称菜单项中,创build一个testing应用程序。
  2. 在新testing应用程序的设置部分:将“ http:// localhost:3000 ”添加到网站url,并将“localhost”添加到应用程序域。
  3. 使用新的Facebook应用程序ID更新您的应用程序
  4. 使用Facebook的SDK V2.2或任何最新的应用程序。

请注意, 本地主机是FB允许的特殊string。 如果你没有在localhost下configuration你的debugging环境,就可以根据这个名字来下推它。

有时候,这个错误会发生在老的javascript sdk上。 如果您保存本地JavaScript文件。 更新它。 我更喜欢一直加载它从Facebook服务器。

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

这可能发生的另一个原因是如果你发送错误的appId。 如果您有一个开发应用程序和一个生产应用程序,这可能发生在早期开发中。 如果你对开发的appId进行硬编码并推送,那么会显示出来。