2010-07-13 6 views
6

Qualcuno ha avuto accesso alla lista degli amici di un utente tramite l'API di Facebook Graph?Accesso agli amici di un utente tramite l'API di Facebook Graph?

Ho codice scritto per autenticare gli utenti sul mio sito web tramite l'API OAuth di Facebook. Funziona splendidamente; Posso accedere a informazioni pubbliche, Mi piace, interessi, attività, ecc. Accedo a questi punti dati tramite il seguente formato URL, in cui sostituisco "uid" con un ID valido (io uso l'uid al posto di "me" perché "io" non funziona come pubblicizzato):

https://graph.facebook.com/uid?access_token= ...
https://graph.facebook.com/uid/likes?access_token= ...
https://graph.facebook.com/uid/interests?access_token= ...
https://graph.facebook.com/uid/activities?access_token= ...

Tuttavia, gli amici di accesso semplicemente non funziona. L'url,

https://graph.facebook.com/uid/friends?access_token= ...

restituisce il seguente errore:

{ 
    "error": { 
     "type": "OAuthAccessTokenException", 
     "message": "An access token is required to request this resource." 
    } 
} 

Gli esempi sul Graph API docs tutti i lavori, ma il token di accesso generato in quella pagina ha un formato diverso dal mio. Non sono sicuro del perché. Ho seguito le loro istruzioni per un tee (e ho funzionato per tutto il resto!).

Gli amici sono considerati publicly accessible information e ho ricontrollato le autorizzazioni del mio account Facebook, quindi non penso che sia questo il problema.

risposta

0

È necessario ottenere prima il token di accesso. Vedere:

Facebook Graph API — getting access tokens

+0

Sto recuperando il token di accesso. Lo sto utilizzando per recuperare i dati del profilo pubblico, i mi piace, gli interessi e le attività. Per favore fatemi sapere come è possibile modificare il mio post per renderlo più chiaro. – thebossman

0

Dove vuoi arrivare che gli amici sono accessibili al pubblico? Le FAQ che hai collegato agli stati:

Publicly available information includes your name, profile picture, gender, and networks. This information makes it easier for friends, family, and other people you know to connect with you.

Non vedo alcuna menzione di amici in quel paragrafo.

+0

Hai ragione. Intendevo collegarmi a: http://developers.facebook.com/docs/authentication/permissions "Per impostazione predefinita, l'applicazione può accedere a tutti i dati pubblici nel profilo di un utente, inclusi nome, immagine del profilo, sesso e amici ". – thebossman

+0

L'opzione "per impostazione predefinita" implica che è possibile accedere a queste informazioni dopo che l'utente ha autenticato la propria applicazione. Cioè, il set di permessi di base (ciò che ottieni quando non richiedi ulteriori obiettivi/permessi) include queste informazioni. Hai comunque bisogno di un 'access_token' per arrivarci. – daaku

+0

Vedo, grazie.Appare il token_accesso che una ricezione dall'API non è valida. Non sei sicuro del perché ... – thebossman

0

L'errore che stai vedendo implica che lo access_token non è stato inviato. Questo è probabilmente anche il motivo per cui lo /me funziona per te. È anche probabile che una volta sistemato, le connessioni degli amici vengano visualizzate come previsto.

+0

Forse hai ragione. Sto seguendo la documentazione di Facebook su un tee, tuttavia ottengo un access_token che non assomiglia a quello della documentazione stessa. Diverse persone su questo blog hanno commentato che hanno lo stesso problema: http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/ – thebossman

7

Se un utente si connette alla propria applicazione è possibile recuperare i loro amici in questo modo:

$facebook = new Facebook(array(
       'appId' => 'xxxxxxxx', 
       'secret' => 'xxxxxxx', 
       'cookie' => true, 
      )); 

    // $session is only != null, when you have the session-cookie, that is set by facebook, after the user logs in 
    $session = $facebook->getSession(); 

    // you dont get a list of friends, but a list, which contains other friendlists 
    $friendsLists = $facebook->api('/me/friends'); 

    foreach ($friendsLists as $friends) { 
     foreach ($friends as $friend) { 
     // do something with the friend, but you only have id and name 
     $id = $friend['id']; 
     $name = $friend['name']; 
     } 
    } 

Ma hai solo accesso a id e il nome degli amici.

+1

Questo post è un piccolo angolo di paradiso . – Mafia