2015-08-16 23 views
7

Sto lavorando su messenger app, per lo più, cercando in the docs hereFacebook Messenger SDK Come ottenere il nome dell'utente

L'unica Gotcha è come passare le informazioni sull'utente alla persona che si sta condividendo il contenuto con?

Da documenti sembra che FBSDKMessengerURLHandlerReplyContext possono contenere userID

NSSet *userIds = context.userIDs 

Eppure, come posso utilizzare l'userID per ottenere le informazioni dell'utente? O è anche il modo giusto per recuperare le informazioni dell'utente?

Sembra che questo compito sia fattibile. This game does that

Può dire le informazioni dell'utente nella prima schermata, senza chiedere effettivamente all'utente di accedere.

Qualsiasi idea o aiuto su come realizzarlo?

risposta

5

Se gli ID utente sono di utenti che già l'autenticazione vostra applicazione, si può essere raggiunto utilizzando grafico API, come dicono sul Docs facebook:

ID utente possono essere utilizzati con il Facebook SDK e grafico API (https://developers.facebook.com/docs/graph-api) per richiedere nomi, foto e altri dati. Questo conterrà solo gli ID degli utenti che hanno anche registrati nella tua app tramite il loro account Facebook.

Ecco alcuni codici su come utilizzare l'API grafico con ID utente. È possibile effettuare una chiamata come segue:

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] 
             initWithGraphPath:[NSString stringWithFormat:@"/%@", {userID-goes-here}] 
             parameters:@{@"fields":@"name,id,picture,gender,birthday,email"} 
             HTTPMethod:@"GET"]; 
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, 
               id result, 
               NSError *error) { 
    if (!error){ 
      NSLog(@"result: %@",result);   
    } 
}]; 

il risultato di questa richiesta si presenta così:

{ 
    birthday = "06/24/1981"; 
    email = "[email protected]"; 
    gender = male; 
    id = 67XXXXX39; 
    name = "Adriano Spadoni"; 
    picture = { 
     data = { 
      "is_silhouette" = 0; 
      url = "https://fbcdn-prof... ...jpg"; 
     }; 
    }; 
} 

Basta ricordare, alcuni campi forse essere NULL.

Probabilmente avrete bisogno di fare un ciclo per richiedere all'utente per utente. Ho paura, se qualcuno sa come chiedere una patch di utenti allo stesso tempo, per favore mostraci come.

MA

Se si desidera ottenere informazioni da parte degli utenti che non installato la tua app, è necessario:

FBSDKGraphRequest(graphPath: "me/taggable_friends", parameters: ["fields":"installed,id,name,picture.width(1000)"]).startWithCompletionHandler({ (connection, result, err) -> Void in 
        if err == nil { 
         print(result) 
        } 
       }) 
+0

AFAIK, con FBMessengerSDK non è necessario l'autenticazione. Puoi solo andare avanti e condividere il contenuto. Se vedi il link del gioco sopra, vedrai che sta ottenendo le informazioni dell'utente in qualche modo e non richiede l'autenticazione o il login dell'applicazione. – N0mi

+0

Aggiungo qualche informazione in più, puoi farlo con "amici taggeble", ho appena provato e ottieni i nomi e le immagini =) –

+0

Sì, ma stai attento con gli amici "taggable".Non dovrebbe essere usato in questo modo e Facebook potrebbe rifiutare la tua app se hai bisogno della loro presentazione in seguito. – Tulleb

0

Non è possibile ottenere più il nome utente perché /me/username non è più a disposizione.

Fonte: https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api

Se si vuole rilevare gli utenti che ritornano, utilizzare il (App mirino) ID invece.

+0

Ehi Piyush, ho quasi commesso lo stesso errore di pensare che stesse chiedendo di "username", ma ha detto: "nome utente" (vedi lo spazio?) Ha sbagliato a scrivere nel titolo, dovrebbe essere "nome utente". Grazie per l'informazione comunque, hai ragione il "nome utente" è andato per sempre su facebook. –

+0

Grazie a drix, ho corretto il titolo – N0mi

Problemi correlati