2011-01-30 44 views
5

我正在嘗試爲我的網站使用Facebook的註冊工具。我想允許Facebook用戶無縫登錄我的網站,但也有非Facebook用戶通過統一的用戶界面創建帳戶。Facebook API的fb:註冊返回「無效'client_id'」未連接到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> 

回答

13

您可能必須配置您的應用程序以允許開發人員以外的其他用戶訪問該應用程序。我很難找到它,但如果我記得很清楚,這是一個沙箱或應用程序的問題。

+0

非常感謝,就是這樣!這是有道理的,但模棱兩可的錯誤信息並沒有真正幫助... – Romain 2011-02-17 23:10:15

+0

在開發者頁面上的應用程序中,轉至關於 - >高級 - >認證 - >沙箱模式,然後單擊禁用。 我啓用了這個想法,因爲我只想要開發者訪問,但我認爲這與註冊不兼容!傻我。 – 2011-08-01 14:58:14

+0

OMG這是殺了我們 - 非常感謝你!這真是一個真心!時刻。 – Jurgen 2012-08-24 00:06:51

0

如果與Facebook註冊您的應用程序,他們會給你一個AppID,您將需要使用的,而不是「123456789」的AppID在上面的代碼中。

+0

感謝您的回答,但我已經擁有了一個Facebook應用ID,我正在使用該ID,而不是上面的「123456789」。我只是使用這個假數字來避免給出我的應用程序ID。 除此之外,你是否看到上面的代碼中有任何錯誤?如果您擁有應用ID,是否可以複製/粘貼此代碼並使用您的應用ID進行試用? – Romain 2011-02-02 07:55:59

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奏效了。

0

只是猜測這裏 - 因爲我有一個類似但不相同的問題:

如果您使用http://developers.facebook.com/docs/plugins/registration/ Facebook的XFBML代碼和{1234123434534}(或其他)一詞取代{YOUR_APP_ID},它失敗因爲它不期望花括號。 (與使用JSON的各種其他領域不同,並且期待它們)。

我不知道這是你做錯了什麼,但是這是一個容易犯的錯誤,正如我剛剛發現的那樣。

0

爲了測試設定YOUR_APP_ID113869198637480

0

以我爲例,我是顯示FB註冊鏈接沒有首先在用戶登錄。在長時間撓頭後,我要求用戶在提交註冊表之前通過Facebook登錄。這個錯誤讓我很高興。