2011-07-08 12 views
7

FISSO ADESSO! Ma non posso ancora rispondere alla mia domanda. Vedi il mio commento qui sotto. E grazie per l'aiuto.Utilizzo di Facebook Javascript SDK per ottenere dati grafici


Ho cercato, cercato e letto i documenti e ancora non riesco a capirlo.

Ho una pagina web su un evento. C'è anche un "evento" pubblico su Facebook per il mio evento. Sto cercando di utilizzare l'SDK JavaScript FB per ottenere il numero di partecipanti per l'evento di Facebook e aggiungerlo al numero di persone che si sono registrate attraverso il sito web.

Ho creato un'app e ho un appID e una stringa segreta. Posso ottenere un token di accesso da:

https://graph.facebook.com/oauth/access_token?client_id=XXXX&client_secret=XXXXX&grant_type=client_credentials

e posso quindi utilizzare tale token di accesso per ottenere i partecipanti per un evento pubblico:

https://graph.facebook.com/331218348435/attending?access_token=XXXXXXXXX

Questo è tutto bene.

Ora sto provando a fare la stessa cosa usando l'SDK Javascript.

ho caricato l'SDK e fatto un init:

FB.init({ 
    appId : 'XXXXXXXX', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true // parse XFBML 
}); 

e so che l'SDK funziona perché posso avere un oggetto con i dati che non ha bisogno di un token di accesso:

FB.api('/331218348435', function (response) { console.log (response) }); 

ma quando cerco di ottenere i dati partecipante che ha bisogno del token di accesso:

FB.api('/331218348435/attending', function (response) { console.log (response) }); 

ottengo un OAuthException : "È richiesto un token di accesso per richiedere questa risorsa."

Tutte le esercitazioni e le informazioni che riesco a trovare si riferiscono all'utilizzo del metodo .login, ma non desidero che un utente effettui l'accesso, ma desidero accedere utilizzando il mio ID app senza alcuna interazione dell'utente.

Avevo presunto che l'API avesse preso la richiesta di avvio dell'SDK e mi ha concesso un token di accesso quando ho chiamato il metodo .init, l'autenticazione eseguita contro l'indirizzo del mio sito web (il referrer HTTP - sì ho impostato l'URL del mio sito web nelle impostazioni dell'app Facebook).

Qualche idea che cosa potrebbe causare che questo non funzioni? Come posso ottenere il token di accesso usando l'SDK Javascript senza fare un .login? Mi manca un passaggio? È possibile?

Grazie

+0

Non sono sicuro di questo. La ragione potrebbe essere che non hai accesso agli utenti che partecipano all'evento. –

+0

OK, questo problema è stato risolto ma, poiché sono un newbie di StackOverflow, non posso rispondere alla mia domanda. Sembra che le impostazioni cambino che Facebook ha detto che prendere "minuti" in realtà ha impiegato più di un'ora, ma ora tutto è OK. Grazie dell'aiuto! – magicroundabout

risposta

1

Oh. OK.

Bene, per qualsiasi motivo, sono andato via e ho cenato e quando torno funziona perfettamente.

Quando ho aggiornato le impostazioni per la mia app, Facebook ha affermato che potrebbero volerci alcuni minuti prima che la modifica aggiri i server. Venuto fuori per prendere più di un'ora!

Il mio codice andava bene.

Grazie per il vostro aiuto.

3

Modulo di quello che dice la documentazione piuttosto circolari, ottenendo il feed frequentare richiede un 'access_token` generica. In termini di Facebook:

Qualsiasi valido access_token Qualsiasi token di accesso valido restituito da nostre API. Un token di accesso potrebbe non essere valido se, ad esempio, è scaduto. Non sono richieste autorizzazioni speciali. Occasionalmente, questo è indicato come un access_token generico.

Questo significa che è possibile utilizzare qualsiasi token a cui si desidera accedere al feed presente, purché l'evento sia pubblico. Il token di accesso più semplice da ottenere sembra essere un token dell'app: http://developers.facebook.com/docs/authentication/#applogin. È possibile ottenere questo token utilizzando solo l'ID app e il segreto e non è richiesta alcuna interazione da parte dell'utente.

Per summerise il contenuto link: È possibile ottenere un token di accesso alle applicazioni con l'invio di una richiesta GET a

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials 

È quindi possibile utilizzare tale access_token per effettuare la chiamata per voi partecipare lista

FB.api('MyEvent/attending?access_token=ACCESS_TOKEN'); 
+0

Grazie per questo, è utile, ma ho già esplorato questo. Non voglio davvero mettere il mio client_secret in Javascript dove qualcuno potrebbe leggerlo. Come ho detto, ho assunto che l'autenticazione fosse gestita dall'SDK; cioè, quando chiamo init() prende il mio ID app e il referrer HTTP, confronta il referrer con le impostazioni dell'app che ho creato e genera un token di accesso per me che l'SDK quindi gestisce. – magicroundabout

+2

Se sei preoccupato di esporre il tuo segreto in JavaScript, potresti fare lo stesso richiamo grafico sul server con PHP e passare il token di accesso al codice JavaScript. – shanethehat

Problemi correlati