6

我正在尝试为我的网站使用 Facebook 的注册工具。我希望 Facebook 用户可以无缝登录到我的网站,但非 Facebook 用户也可以通过该统一 UI 创建帐户。

<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>
4

6 回答 6

12

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

于 2011-02-16T20:32:10.800 回答
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>

就像在注册示例页面上一样,但是,JavaScript SDK 页面

<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从外部脚本标签中删除就可以了。

于 2011-05-12T14:57:23.010 回答
0

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

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

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

于 2012-02-24T15:10:07.603 回答
0

如果你在 Facebook 上注册了你的应用程序,他们会给你一个 appID,你需要使用它来代替上面代码中的“123456789”AppID。

于 2011-02-01T04:39:58.917 回答
0

YOUR_APP_ID对于测试设置你113869198637480

于 2012-05-16T06:20:28.793 回答
0

就我而言,我没有先登录用户就显示了 fb 注册链接。在摸索了很长时间之后,我要求用户在提交注册表之前通过 facebook 登录。这个错误让我很高兴。

于 2014-03-16T16:22:29.547 回答