Facebook API的fb:注册时未连接到Facebook时返回“无效'client_id'”

时间:2011-01-30 21:42:49

标签: facebook fbml registration facebook-fbml

我正在尝试将Facebook的注册工具用于我的网站。我想允许Facebook用户无缝登录我的网站,也允许非Facebook用户通过统一的用户界面创建帐户。

我正在使用<fb:registration>标记用于此目的。如果我在到达页面时已经连接到Facebook,一切都按预期工作(表格预先填入我的Facebook帐户的信息)。但如果我没有连接到Facebook,则会显示以下错误:Invalid 'client_id'.

我做错了什么?

非常感谢你的帮助。

您可以在下面找到从服务器呈现的HTML代码:

<!doctype html>
<html xmlns:fb='http://www.facebook.com/2008/fbml'>
<head id='head'>
<title>MyWebSite - Signup</title>
<link rel='stylesheet' type='text/css' href='/client/Core.css'/>
<script language='JavaScript' type='text/javascript' src='/client/jQuery.js'></script>
<script type='text/javascript'>
function initialize() {
 $.getScript('client/Core.js');
 $.getScript(document.location.protocol + '//connect.facebook.net/en_US/all.js');
}

window.fbAsyncInit = function() {
 FB.init({
  appId   : 123456789, // replaced here by my App ID
  session : {},
  status  : true,
  cookie  : true,
  xfbml   : true
 });
 FB.Event.subscribe('auth.login', function() {
  window.location.href = 'DoLogin';
 });
};
</script>
</head>
<body onload='initialize();'>
<span id='fb-root'></span>
<fb:registration 
    fields='[{"name":"name"},{"name":"first_name"},{"name":"last_name"},{"name":"email"},{"name":"location"},{"name":"gender"},{"name":"password","view":"not_prefilled"},{"name":"captcha"}]' 
    redirect-uri='http://172.16.100.31/DoSignup'
    width='600'
    fb_only='false'
    allowTransparency='true'>
</fb:registration>
</body>
</html>

6 个答案:

答案 0 :(得分:12)

您可能必须将应用程序配置为允许开发人员以外的用户访问该应用程序。我很难找到它,但如果我记得很清楚,这是一个沙盒应用程序的问题。

答案 1 :(得分:2)

我遇到了同样的问题,除了我已经禁用了沙箱。 我已将脚本标记包含为

<script src="http://connect.facebook.net/en_US/all.js#appId={YOUR_APP_ID}&xfbml=1"></script>

<fb:registration 
  fields="name,birthday,gender,location,email" 
  redirect-uri="https://developers.facebook.com/tools/echo/"
  width="530">
</fb:registration>

就像在registration example page上一样,JavaScript SDK page

<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({
    appId  : 'YOUR APP ID',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
  });
</script>

从外部脚本标记中删除#appId={YOUR_APP_ID}&xfbml=1就可以了。

答案 2 :(得分:0)

如果您使用Facebook注册了您的应用程序,他们将为您提供一个appID,您需要使用该ID而不是上述代码中的“123456789”AppID。

答案 3 :(得分:0)

在这里猜测 - 因为我有一个类似但不相同的问题:

如果您在http://developers.facebook.com/docs/plugins/registration/上使用Facebook XFBML代码并将{YOUR_APP_ID}替换为{1234123434534}(或其他),则会失败,因为它不期望大括号。 (与使用JSON和 期望它们的各种其他区域不同)。

我不知道这是不是你做错了,但正如我刚刚发现的那样,这是一个容易犯的错误。

答案 4 :(得分:0)

要进行测试,请将YOUR_APP_ID设置为113869198637480

答案 5 :(得分:0)

在我的情况下,我显示的是fb注册链接,而没有先登录用户。在长时间挠头之后,我要求用户在出示注册表之前通过facebook登录。这个错误让我很高兴。