2013-11-02 6 views
5

Ich versuche, einen Benutzer Land, Staat und Stadt zu bekommen ein FBGraphObject verwenden. Die zurück FBGraphObject enthält folgendes Stück Information:Anfahrt Land, Region, Stadt Von FacebookSDK für iOS

hometown = { 
    id = 112118618814985; 
    name = "La Paz, Bolivia"; 
}; 

(Meine Stadt im Land Bolivien La Paz, genannt).

Diese konnte wunderbar Arbeit, wenn es würde den „Zustand“ tatsächlich zurück. Wenn jemand aus Wichita, Kansas in den USA, meine app lief, wäre das Ergebnis:

hometown = { 
    name = "Wichita, Kansas"; 
}; 

(diese Person der Stadt Wichita, im US-Bundesstaat Wichita, die in den USA sind ... Das Problem ist, Die FBGraphObject sagt mir nicht, das ist in den USA).

Als ich zum ersten Mal sah der Heimatstadt Eigenschaft Diagrammobjekt, ich dachte ich sofort mit ihm arbeiten könnte, wenn ich die Zeichenfolge nur vollzuspritzen die Koma-Token, mit diesem zu bekommen:

La Paz 
Bolivia 

Dann würde ich sofort wissen, dass das erste Objekt eine Stadt darstellt und das zweite ein Land darstellt.

Aber für ein Land wie die USA, während das erste Element noch eine Stadt, die zweite stellt einen Zustand, und stellen daher würde ich die Daten in Token aufgeteilt von dort nicht speichern kann.

Wie kann ich richtig ein Land, Staat, Stadt die FacebookSDK für iOS? Ich kratze mich am Kopf, weil jeder, der es geschafft hat, es mit PHP zu arbeiten scheint, aber ich brauche das für das iPhone selbst.

EDIT: Für das Protokoll, das ist, wie ich versuche, alles zu bekommen:

[FBRequestConnection startForMeWithCompletionHandler: 
^(FBRequestConnection *connection, id result, NSError *error) { 
    if(error == nil) 
    { 
     FBGraphObject<FBGraphUser, FBGraphLocation> *graph = result; 
     NSLog(@"%@", graph); 

     [[SPAccount sharedAccount] linkFacebookAccountWithGraphObject:graph 
     andCompletionBlock:^(BOOL linked) {}]; 
    } 
}]; 

Und alle folgenden Rückkehr nil:

graph.location.country 
graph.country 
graph.location.location.country 

Antwort

0

können Sie die Position durch das bekommen Standorteigenschaft auf FBGraphUser. Dadurch erhalten Sie ein Objekt, das FBGraphPlace entspricht. Die Lage-Eigenschaft auf dem FBGraphPlace Konformer ist ein Objekt, das mit dem FBGraphLocation Protokoll entspricht, die Eigenschaften, zB:

city 
country 
latitude 
longitude 
state 
street 
zip 

oder

Import FacebookSDK/FacebookSDK.h in Ihrem Code

[FBSession openActiveSessionWithReadPermissions:@[@"email",@"user_location",@"user_birthday",@"user_hometown"] 
            allowLoginUI:YES 
           completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { 

            switch (state) { 
             case FBSessionStateOpen: 
              [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { 
               if (error) { 

                NSLog(@"error:%@",error); 


               } 
               else 
               {             
                // retrive user's details at here as shown below 
                NSLog(@"FB user first name:%@",user.first_name); 
                NSLog(@"FB user last name:%@",user.last_name); 
                NSLog(@"FB user birthday:%@",user.birthday); 
                NSLog(@"FB user location:%@",user.location); 
                NSLog(@"FB user username:%@",user.username); 
                NSLog(@"FB user gender:%@",[user objectForKey:@"gender"]); 
                NSLog(@"email id:%@",[user objectForKey:@"email"]); 
                NSLog(@"location:%@", [NSString stringWithFormat:@"Location: %@\n\n", 
                     user.location[@"name"]]); 

               } 
              }]; 
              break; 

             case FBSessionStateClosed: 
             case FBSessionStateClosedLoginFailed: 
              [FBSession.activeSession closeAndClearTokenInformation]; 
              break; 

             default: 
              break; 
            } 

           } ]; 
Verwandte Themen