2011-01-30 11 views
5

Sto cercando di utilizzare lo strumento di registrazione di Facebook per il mio sito web. Vorrei consentire agli utenti di Facebook di accedere senza problemi al mio sito Web, ma anche agli utenti non di Facebook di creare un account attraverso quell'interfaccia utente unificata.Fb di Facebook API: registrazione che restituisce "Invalid 'client_id'" quando non connesso a Facebook

Sto usando il tag <fb:registration> per quello scopo. Se sono già connesso a Facebook quando arrivo alla pagina, tutto funziona come previsto (il modulo è precompilato con le informazioni dal mio account Facebook). Ma se non sono connesso a Facebook, viene visualizzato il seguente errore: Invalid 'client_id'..

Cosa sto sbagliando?

Grazie molto per il vostro aiuto.

Troverete qui di seguito il codice HTML reso dal server:

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

risposta

13

Potrebbe essere necessario configurare l'applicazione in modo che gli utenti diversi dagli sviluppatori possano accedere all'app. Ho avuto difficoltà a trovarlo, ma se ricordo bene, era una questione di sandboxing dell'app o no.

+0

Grazie mille, è andata così! Questo ha senso, ma il messaggio di errore ambiguo non aiuta davvero ... – Romain

+0

Nella tua app sulla pagina sviluppatore, vai su Informazioni-> Avanzate-> Autenticazione-> Modalità sandbox e fai clic su Disabilitato. L'ho attivato pensando che sarebbe andato bene visto che volevo solo l'accesso agli sviluppatori, ma immagino che sia incompatibile con la registrazione! Silly me. –

+0

OMG ci stava uccidendo - grazie mille! Questo era un vero doh! momento. – Jurgen

0

Se ti sei registrato l'applicazione Facebook che vi darà un appID che sarà necessario utilizzare al posto del '123456789' AppID nel codice sopra.

+0

Grazie per la risposta, ma possiedo già un ID app di Facebook, che sto utilizzando al posto del "123456789" sopra. Stavo usando questo numero falso solo per evitare di distribuire il mio ID app. Oltre a ciò, vedi qualcosa di sbagliato nel codice sopra? Se possiedi un ID app, potresti copiare/incollare questo codice e provarlo con l'ID della tua app? – Romain

2

Mi sono imbattuto nello stesso problema, tranne che ho già disattivato la sandbox. avevo inserito il tag script come

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

come lo era sulla registration example page, tuttavia, il JavaScript SDK page avevano

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

Rimozione del #appId={YOUR_APP_ID}&xfbml=1 dal tag script esterno ha fatto il trucco.

0

Basta indovinare qui - perché ho avuto una simile, ma non identico problema:

se si utilizza il codice di Facebook XFBML su http://developers.facebook.com/docs/plugins/registration/ e sostituire la parola {YOUR_APP_ID} da {1.234.123,434534 millions} (o qualsiasi altra cosa), non riesce perché non si aspetta le parentesi graffe. (Diverso da varie altre aree che utilizzano JSON e sono che li prevede).

Non so se questo è ciò che hai fatto di sbagliato, ma è un errore facile da fare, come ho appena scoperto.

+0

La tua ipotesi era giusta! –

0

Per i test di impostare il proprio YOUR_APP_ID-113869198637480

+1

no, anche questo non funziona per me – Vik

0

Nel mio caso, mi stava visualizzando il link di registrazione fb senza effettuare l'accesso al primo utente. Dopo aver graffiato la mia testa per un lungo periodo, ho chiesto all'utente di accedere tramite Facebook prima di presentare il modulo di registrazione. L'errore era andato molto per la mia gioia.

Problemi correlati