2015-08-16 10 views
7

ich über Messenger App arbeite, meist durch einen Blick auf the docs hereFacebook Messenger SDK Wie der Name des Benutzers erhalten

Der einzige Gotcha ist, wie die Benutzerinformationen an die Person übergeben Sie mit dem Inhalt zu teilen?

Von docs scheint es, dass FBSDKMessengerURLHandlerReplyContext userID

NSSet *userIds = context.userIDs 

noch enthalten kann, wie kann ich verwenden, um die Benutzer-ID die Benutzerinformationen zu erhalten? Oder ist es sogar der richtige Weg, um Benutzerinformationen abzurufen?

Es scheint, als ob diese Aufgabe machbar ist. This game does that

Er kann die Benutzerinformationen auf dem ersten Bildschirm anzeigen, ohne den Benutzer tatsächlich zur Anmeldung aufzufordern.

Irgendeine Idee oder Hilfe, wie man es macht?

Antwort

5

Wenn die Benutzer-IDs von Benutzern, die bereits in Ihrer App authentifizieren, kann es unter Verwendung Graph API erreicht werden, wie sie auf Facebook Docs sagen:

Benutzer-IDs können mit dem Facebook-SDK und Graph verwendet werden API (https://developers.facebook.com/docs/graph-api), um Namen, Fotos und andere Daten abzufragen. Diese enthält nur IDs von Nutzern, die über ihr Facebook-Konto ebenfalls in Ihrer App angemeldet sind.

Hier ein Code zur Verwendung der Grafik-API mit Benutzer-ID. Sie können einen Anruf wie folgt:

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);   
    } 
}]; 

das Ergebnis dieser Anfrage wie folgt aussieht:

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

Denken Sie daran, vielleicht einige Felder null sein.

Sie müssen wahrscheinlich eine Schleife Benutzer für Benutzer anfordern Ich fürchte, wenn jemand weiß, wie man einen Patch von Benutzern zur gleichen Zeit, bitte zeigen Sie uns wie.

ABER

Wenn Sie Informationen von den Benutzern zu erhalten, die Ihre App noch nicht installiert ist, müssen Sie:

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, mit FBMessengerSDK ist keine Authentifizierung erforderlich. Sie können einfach weitermachen und den Inhalt teilen. Wenn Sie den Spiellink oben sehen, werden Sie feststellen, dass er die Benutzerinformationen irgendwie erhält und keine App-Authentifizierung oder Anmeldung erfordert. – N0mi

+0

Ich füge noch ein paar Infos hinzu, du kannst es mit "taggeble friends" machen, ich habe es getestet und du bekommst die Namen und Bilder =) –

+0

Ja aber sei vorsichtig mit "taggable" Freunden.Es sollte nicht auf diese Weise verwendet werden und Facebook könnte Ihre App ablehnen, wenn Sie ihre Einreichung später benötigen. – Tulleb

0

Sie können den Benutzernamen mehr bekommen, weil /me/username nicht mehr verfügbar.

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

Wenn Sie wiederkehrende Nutzer zu ermitteln, verwenden Sie die (App Scoped) ID statt.

+0

Hey Piyush, ich habe fast den gleichen Fehler gemacht zu denken, er fragt nach "Benutzername", aber er sagte: "Benutzername" (siehe das Leerzeichen?) Er schrieb falsch im Titel, sollte es "Benutzername" sein. Danke für die Information trotzdem, du hast Recht "Benutzername" ist auf Facebook endgültig weg. –

+0

Danke drix, ich habe den Titel repariert – N0mi

Verwandte Themen