2010-04-30 14 views
5

Howdy. Sono stato incaricato di creare un gioco su Facebook, ma sono nuovo nello sviluppo di Facebook, quindi sono appena iniziato. Mi scuso in anticipo se questo è un gioco da ragazzi per le persone.Come posso ottenere la funzionalità require_login() - like utilizzando la nuova libreria client PHP per Facebook?

Ho problemi a seguire tutti gli esempi che vedo sui siti, e continuo a correre nelle pagine mancanti nella documentazione di Facebook quando sto cercando di leggere. I penso che sia perché c'è una nuova versione della libreria client di PHP per Facebook, e tutto quello che sto trovando si riferisce al vecchio client.

Per esempio, vedo questo codice in un sacco di esempi:

require 'facebook.php'; 
$facebook = new Facebook(array('appId' => '(id)', 'secret' => '(secret)')); 
$facebook_account = $facebook->require_login(); 

... ma non c'è alcun "require_login()" nella libreria client fornito nel file facebook.php.

Da quello che posso dire, sembra che Facebook abbia recentemente implementato alcuni nuovi sistemi per lo sviluppo, ma non vedo alcun codice di esempio per gestirlo. La nuova libreria viene fornita con un file "example.php", ma sembra essere solo per aggiungere funzionalità "Accedi con Facebook" ad altri siti (quello che sto assumendo è ciò che intendono con "Facebook Connect"), non solo per eseguire app in una pagina Canvas su Facebook.

In particolare, ciò che devo fare è consentire agli utenti di visitare una pagina dell'applicazione all'interno di Facebook, far apparire la finestra di dialogo che consente loro di autorizzare l'app, di visualizzarla nella loro pagina "giochi" e di averla passami le informazioni rilevanti sull'utente in modo che possa iniziare a creare il gioco. Ma non riesco a trovare alcun tutorial o esempio che mostri come farlo usando la nuova libreria. Sembra che questo dovrebbe essere abbastanza semplice, ma sto incontrando dei blocchi stradali.

O mi manca qualcosa sulla libreria client PHP? Dovrebbe require_login() funzionare per me, e c'è qualcosa di rotto con la mia implementazione, come avere la libreria client sbagliata o qualcosa del genere? Ho scaricato da GitHub ieri, quindi sono abbastanza sicuro di avere la versione più recente del codice che ho, ma forse sto scaricando il file "facebook.php" sbagliato ...?

risposta

4

Quanto segue è una riscrittura della vecchia funzione require_login. Duplica esattamente la vecchia funzionalità.

function facebook_require_login($required_permissions = '') 
{ 
    global $facebook; // NOTE GLOBAL FACEBOOK OBJECT, MUST ALREADY BE INSTANTIATED 

    $user = $facebook->get_loggedin_user(); 
    $has_permissions = true; 

    if ($required_permissions) { 
    $facebook->require_frame(); 
    $permissions = array_map('trim', explode(',', $required_permissions)); 
    foreach ($permissions as $permission) { 
     if (!in_array($permission, $facebook->ext_perms)) { 
     $has_permissions = false; 
     break; 
     } 
    } 
    } 

    if ($user && $has_permissions) return $user; 

    $facebook->redirect(
    $facebook->get_login_url(Facebook::current_url(), $facebook->in_frame(), 
         $required_permissions)); 
} 
+0

Grazie. Ora ho due percorsi da percorrere. –

+0

Ho appena implementato questo. Mentre funzionava anche quello di phpfour, questo era il rimpiazzo. Grazie, Dustin. –

+0

Accettare senza upvote? – defines

0

Il nuovo script php su git hub è un wrapper per l'API di facebook, presumo il grafico ma ho visto il codice per fql anche per questo chissà. I forum sono attualmente in calo e IRC era morto quando sono passato. Ho cercato la stessa soluzione di cui hai bisogno per chiamare -> api (\ me). Poiché lo script estende un'altra classe se ricordo bene, puoi provare a utilizzare la classe/funzione reflection per vedere quali metodi sono disponibili. Speriamo che una buona documentazione sia in arrivo! Per favore fatemi sapere se risolvete questo. (Scusate per la scarsa formattazione sono sul mio cellulare)

+0

Grazie per il feedback. Sto trovando lo sviluppo di un'app di Facebook, qualcosa che sembra come se fosse abbastanza semplice, è un processo contorto. La mancanza di esempi chiari aggiunge solo confusione. –

0

Bene, sono stato in grado di trovare una soluzione al problema di autorizzare l'applicazione utilizzando il nuovo SDK PHP. Puoi controllare il mio post sul blog here.

In breve, è necessario ottenere una sessione autenticata e quindi è possibile chiamare le funzioni per ottenere l'ID dell'utente connesso. In questo caso, chiamerai il percorso "/ me" dall'API Graph.

+0

Sembra l'informazione che stavo cercando. Lo proverò e vedrò se riesco a farmi dove devo essere. Grazie per aver dedicato del tempo per postare questo! –

+0

Piacere mio - Sono rimasto bloccato per 2 giorni con esso !! –

1

soluzione phpfour è l'unica corretta - dal momento che utilizza la nuova libreria php-sdk da github.

La soluzione migliore è modificare il nuovo Facebook.php e aggiungere una funzione require_login() (quindi tutte le pagine esistenti che si basano su di esso possono rimanere lo stesso)

public function require_login(){ 
    if (!$this->getSession()) { 
    $url = $this->getLoginUrl(array(
     'canvas' => 1, 
     'fbconnect' => 0 
    )); 
    echo "<script type='text/javascript'>top.location.href = '$url';</script>"; 
    } 
else 
    return $this->getUser(); 
} 
Problemi correlati