Facebook注册页面 - 未登录Facebook时“client_id”无效

时间:2013-02-17 22:21:16

标签: facebook facebook-javascript-sdk

我已经制作了一个Facebook注册表单,可以按照我的预期使用自定义字段和功能,除非用户在第一次访问表单时未记录进入Facebook。

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

  

无法加载此ID的注册表单。你可能有   之前在Facebook上阻止了此应用。转到您的Facebook隐私   用于取消阻止此应用的设置。 (错误:'client_id'无效。)

现在我已经知道这已经在网站上讨论了,但其他地方提供的解决方案对我不起作用,我真的希望这个工作基于facebook支持的XFBML解决方案(演示在这里{{3} })

如果你退出facebook,你可以访问我的代码测试,直接从facebook示例中获取并且几乎没有修改过:http://developers.facebook.com/docs/plugins/registration/

顺便说一句,是的沙盒在Facebook应用程序设置中被禁用,因为这是一个常见的修复其他人在S.O.建议。

感谢您的时间。 注意;我会对这个主题的其他现有问题发表评论,但stackoverflow不会让我(还)。

2 个答案:

答案 0 :(得分:1)

检查您使用的ID的应用是否不受人口统计限制(例如按年龄或国家/地区),并且不在沙箱模式下。

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

答案 1 :(得分:1)

只是为了确认;我从来没有真正解决这个问题。相反,我做了一个工作,并能够通过Facebook sdk进行javascript检查,以查看用户是否在第一次登录具有facebook注册表单的页面时已登录。

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

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));