2012-05-04 13 views
5

Sto tentando di richiamare la posizione corrente di tutti gli amici di un utente su facebook e sto incontrando un curioso problema in cui alcuni di quegli amici sto leggendo NULL quando posso vedere sulle loro pagine di Facebook che dice "Vive in ,". La parte difficile di questo errore è che si verifica solo su circa il 30% dei casi. Nei casi rimanenti, recupera tutte le informazioni corrette, il che mi dice che probabilmente le autorizzazioni sono state configurate correttamente.FB Graph/FQL: Current_location di amici a volte sta leggendo Null quando la pagina FB mostra una posizione

Per essere precisi, il codice FQL che sto usando è:

SELECT uid, 
     name, 
     current_location 
FROM USER 
WHERE uid IN (SELECT uid2 
       FROM friend 
       WHERE uid1 = Me()) 

Questo stesso problema è sorto quando si effettuano le richieste javascript direttamente al grafico, in modo che non sembra essere un problema FQL neanche. Qualcuno sa perché current_location potrebbe a volte fallire e riportare NULL, ma non sempre?

Grazie.

risposta

0

Ci sono 2 possibilità; Gli amici degli utenti che hanno CURRENT_LOCATION nullo:

1) non ha specificato la loro posizione attuale nel profilo facebook

2) Si specificati la posizione corrente nel loro profilo Facebook, ma loro ambiente privacy nega per vederlo

+0

sono sia di quelle situazioni possibili se riesco a vedere la loro posizione quando Vado alla loro vera pagina facebook? Elenca nella loro sezione di informazioni "Vive in ...", eppure l'API del grafico riporta NULL in current_location. Esistono due autorizzazioni separate per visualizzare la posizione corrente nel profilo, ma non tramite l'API grafico? –

+0

C'è qualcosa in più di quello che sta succedendo. A volte un'app ha le autorizzazioni appropriate e l'utente può vederla, ma l'app non può. – Leopd

2

Le impostazioni di privacy hanno una priorità più alta rispetto a quelle di facebook.

Se l'utente ha limitato particolare informazioni dalla impostazione della privacy, non sarà in grado di recuperare che da Facebook di api (grafico, FQL, API REST), anche se utente concede il permesso per questo.

ad es.

Se mi sono limitato a condividere il mio compleanno sulla privacy, nessuna app sarebbe in grado di afferrare il mio compleanno anche se lo chiedono.

Inoltre, l'utente può limitare le app a ottenere particolari informazioni.

ad es. L'utente può consentire app xyz per accedere tutto quello che vogliono, ma allo stesso tempo utente può limitare l'applicazione xyz per accedere al suo luogo

Spero che questo risponde alla tua domanda.

+0

Sì, gli utenti FB possono limitare quali utenti possono vedere quali informazioni. Ma questo non spiega perché un utente che può vedere le informazioni su facebook.com non possa vedere le stesse informazioni attraverso un'app con autorizzazioni appropriate. – Leopd

+1

In realtà mi sono imbattuto nella risposta mentre esploravo le impostazioni sulla privacy. Sembra che Facebook abbia impostazioni di privacy separate per gli utenti e per le app. In particolare, la chiave è in: Impostazioni sulla privacy -> Annunci, app e siti web -> Come le persone portano le tue informazioni alle app che usano. Credo che questo potrebbe essere predefinito per non-condivisione, che presenterebbe un problema piuttosto grande per chiunque voglia accedere alle informazioni degli amici in un'app. –

+0

Yeap, come ho detto nel mio ultimo punto, gli utenti possono limitare le app a ottenere informazioni particolari. Quindi, un utente può vedere le sue informazioni su Facebok ma non su un'app. Inoltre, l'utente potrebbe avere informazioni condivise solo con utenti specifici e non con tutti gli utenti – Jashwant

0

Ho lo stesso problema.

Ho controllato due utenti diversi che sono amici di me.

In entrambi i casi FQL interrogazione come:

select uid, first_name, name, birthday, birthday_date, current_address, current_location, hometown_location, sex from user where uid in (select uid2 from friend where uid1 = me() 

rendimenti null per home_location.

Avevo controllato entrambi gli account e la posizione di residenza era accessibile a tutti (sia la privacy che le impostazioni della privacy dell'app).

Il mio token di accesso includeva tutte le autorizzazioni necessarie (la posizione di casa è stata mostrata per altri amici).

Poi corro console FQL con query:

select uid, first_name, name, birthday, birthday_date, current_address, current_location, hometown_location, sex from user where uid = nnnn 

come proprietario ed i risultati sono stati:

  • Proprietario tornato a casa posizione.
  • Nella mia vecchia scheda del browser della Console FQL - ancora nessuna sede.
  • Nella mia nuova scheda del browser della console FQL, sono arrivato a casa.

Dopo un po 'sono tornato a casa sulla vecchia console FQL.

Ma le vecchie domande ancora non sono tornati a casa ... posizione

Sembra come qualche problema di caching sul lato FB.

0

Lo stesso problema qui. Posso recuperare current_location o hometown_location per NESSUNO dei miei amici. Per la maggior parte di loro posso facilmente vederlo visitando il loro profilo però. I permessi delle app friends_location e friends_hometown sono impostati.

0

Prova questa ricerca per ottenere la posizione corrente dei tuoi amici

SELECT first_name,uid, last_name, current_location.name 
FROM user 
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND current_location 

anche u sarà bisogno friends_location il permesso di eseguire questa query

Problemi correlati