2010-06-27 24 views
12

Si verificano problemi nel tentativo di connettere il mio sito Web a Facebook. Quello che vorrei fare è permettere agli utenti di aumentare i loro account collegandoli a Facebook (non ho bisogno che le persone siano in grado di accedere con Facebook, invece sto usando OpenID). Il mio sito web funziona nel framework CodeIgniter.Aggiunta di Facebook Connessione a un sito Web CodeIgniter

Quello che farò è rimuovere tutto ciò che ho provato e camminare attraverso i miei passi fino a quando non smette di funzionare.

Fase 1: Impostare l'SDK Javascript e XFBML

prima cosa aggiungere un riferimento alla specifica FBML al mio <html> tag:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en"> 

Poi, dopo la mia tag <body>, aggiungo :

<script src="http://static.new.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script> 

Ora arriva il primo problema che ho avuto but have now solved. Il problema era che i documenti per l'SDK JavaScript dicevano che il metodo requires the appId come parametro requires the appId, ma questo risultato era errato. Dovevo invece passare la mia apiKey. Quindi questo è il codice che ho finito con, che va prima del mio tag </body>:

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
    FB.init({ 
     apiKey : '<?php echo $this->config->item('facebook_api_key'); ?>', 
     status : true, 
     cookie : true, 
     xfbml : true 
    }); 

</script> 

Ora posso aggiungere entità XFBML alle mie pagine, come ad esempio <fb:login-button></fb:login-button> che funziona esattamente come previsto. Lo clicco e si apre una finestra che chiede se voglio consentire al mio sito web di accedere al mio profilo Facebook. Dico si, e poi se controllo le mie impostazioni dell'applicazione su Facebook, posso vedere che il mio sito web è stato aggiunto.

Quindi questo passaggio funziona correttamente.

Fase 2: Impostare la libreria PHP

Va bene, così ora ho bisogno di aggiungere la libreria PHP. Quindi una rapida ricerca su google per "libreria di codeigniter facebook" rivela Elliot Haughin's library. Scarico i file, li metto tutti nei posti giusti e poi lavoro sul caricamento della libreria.

Ora si verifica il problema corrente. Aggiungo il seguente codice (tratto da l'esempio dato con la libreria) al mio costruttore di controller in modo che accade in ogni pagina:

$this->load->library('facebook_connect'); 
$this->data['fb_user'] = $this->facebook_connect->user; 
$this->data['fb_userid'] = $this->facebook_connect->user_id; 

Ma se faccio print_r($this->data['fb_user']); non ottengo niente. Mai. Se sono connesso a Facebook, disconnesso, ho effettuato l'accesso e aggiunto il mio sito al mio profilo, ecc. Ecc. Ecc. L'utente e user_id non sono mai impostati. Non ho alcun errore però.

Per quanto ne so, i valori dovrebbero essere impostati in modo da sapere se la persona che sta navigando sul mio sito è registrata nel loro account Facebook. Se lo sono, posso vedere se hanno autorizzato la mia applicazione. Se lo hanno permesso, posso lasciarli disconnettere dal mio sito, in caso contrario, posso lasciarli connettersi. Ma non posso fare nulla se queste variabili non sono popolate.

Ho provato a curiosare nella fonte della biblioteca, ma non riesco davvero a capirlo. E spero che la vera soluzione per questo non comporterà l'hacking della libreria a parte. Mi aspetto che una libreria specifica di CodeIgniter funzioni.

Qualche idea?

Grazie mille. :)

+0

Facebook ha un php-sdk ufficiale che funziona bene all'interno di codeigniter ... http: // jondavidjohn.com/b/P – jondavidjohn

risposta

2

Prova this Facebook Library di Danny Tran ospitato su Github. Fa miracoli ed è abbastanza facile da installare.

1

Hai aggiunto il file xd_reciever nella tua directory pubblica ????

Probabilmente questo potrebbe causare il problema bcoz xd_reciever deifine il canale tra la tua app su facebook.

2
+2

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/18783148) –

Problemi correlati