Facebook注册页面-无效';客户id';未登录Facebook时
我已经制作了一个Facebook注册表单,它可以像我期望的那样使用自定义字段和函数,但当用户第一次访问表单时,没有登录到Facebook时除外 在这种情况下,表单不会在屏幕上呈现,出现以下错误: 无法加载此ID的注册表。您可能有 之前在Facebook上阻止了此应用程序。转到你的Facebook隐私 取消阻止此应用的设置。(错误:无效的“客户端id”。) 现在我已经知道,这个问题已经在网站上讨论过了,但是其他地方提供的解决方案对我来说不起作用,我真的希望它在facebook支持的XFBML解决方案中起作用(这里有一个演示) 如果您注销facebook,您可以访问我的代码测试,该测试直接取自facebook示例,此处几乎没有修改: 顺便说一下,facebook应用程序设置中禁用了yes sandbox,这是S.O.上其他人建议的常见修复方法 谢谢你抽出时间。Facebook注册页面-无效';客户id';未登录Facebook时,facebook,facebook-javascript-sdk,Facebook,Facebook Javascript Sdk,我已经制作了一个Facebook注册表单,它可以像我期望的那样使用自定义字段和函数,但当用户第一次访问表单时,没有登录到Facebook时除外 在这种情况下,表单不会在屏幕上呈现,出现以下错误: 无法加载此ID的注册表。您可能有 之前在Facebook上阻止了此应用程序。转到你的Facebook隐私 取消阻止此应用的设置。(错误:无效的“客户端id”。) 现在我已经知道,这个问题已经在网站上讨论过了,但是其他地方提供的解决方案对我来说不起作用,我真的希望它在facebook支持的XFBML解决方
注;我本想就这个主题的其他现有问题发表评论,但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));