Facebook注册页面-无效';客户id';未登录Facebook时

Facebook注册页面-无效';客户id';未登录Facebook时,facebook,facebook-javascript-sdk,Facebook,Facebook Javascript Sdk,我已经制作了一个Facebook注册表单,它可以像我期望的那样使用自定义字段和函数,但当用户第一次访问表单时,没有登录到Facebook时除外 在这种情况下,表单不会在屏幕上呈现,出现以下错误: 无法加载此ID的注册表。您可能有 之前在Facebook上阻止了此应用程序。转到你的Facebook隐私 取消阻止此应用的设置。(错误:无效的“客户端id”。) 现在我已经知道,这个问题已经在网站上讨论过了,但是其他地方提供的解决方案对我来说不起作用,我真的希望它在facebook支持的XFBML解决方

我已经制作了一个Facebook注册表单,它可以像我期望的那样使用自定义字段和函数,但当用户第一次访问表单时,没有登录到Facebook时除外

在这种情况下,表单不会在屏幕上呈现,出现以下错误:

无法加载此ID的注册表。您可能有 之前在Facebook上阻止了此应用程序。转到你的Facebook隐私 取消阻止此应用的设置。(错误:无效的“客户端id”。)

现在我已经知道,这个问题已经在网站上讨论过了,但是其他地方提供的解决方案对我来说不起作用,我真的希望它在facebook支持的XFBML解决方案中起作用(这里有一个演示)

如果您注销facebook,您可以访问我的代码测试,该测试直接取自facebook示例,此处几乎没有修改:

顺便说一下,facebook应用程序设置中禁用了yes sandbox,这是S.O.上其他人建议的常见修复方法

谢谢你抽出时间。
注;我本想就这个主题的其他现有问题发表评论,但stackoverflow(目前)不让我发表评论。

检查您正在使用的ID的应用程序是否受人口统计限制(如年龄或国家),并且它是否仍处于沙箱模式


如果应用程序受到限制或处于沙盒模式,则未登录且符合应用程序限制的用户(或沙盒模式下的应用程序管理员)在登录之前无法查看应用程序的存在或其详细信息。

仅用于确认;我从来没有把它修好过。相反,我做了一个变通,并能够通过facebook sdk进行javascript检查,查看用户第一次访问带有facebook注册表的页面时是否登录

如果他们没有登录(或未经授权),并且如果他们稍后在我调用初始化facebook表单的页面中登录,我会执行http重定向

window.fbAsyncInit = function() {
FB.init({
    appId      : xxxx, // App ID
    channelUrl : 'http:///xxxxx/fbchannel.php', 
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
});

// Additional initialization code here
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        // all ok!
        //var uid = response.authResponse.userID;
        //var accessToken = response.authResponse.accessToken;
    } else if (response.status === 'not_authorized') {
        window.location.href="create_account_with_facebook?authorizefirst";
    } else {
        window.location.href="create_account_with_facebook?loginfirst";
    }
});
};
// Load the SDK Asynchronously
(function(d){
    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.js";
    ref.parentNode.insertBefore(js, ref);
 }(document));