2013-11-02 72 views
5

我正在嘗試使用FBGraphObject獲取用戶的國家,州和城市。返回FBGraphObject包含以下一條信​​息:從iOS的FacebookSDK獲取國家,州,城市

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

(我的城市叫做拉巴斯,在該國玻利維亞)。

This could奇妙地工作,如果它實際上會返回「狀態」。如果堪薩斯州的威奇托在美國,一個人跑到我的應用程序,其結果必然是:

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

(即人的城市是威奇托,威奇托的狀態,這是在美國......問題是FBGraphObject不告訴我,這是在美國)。

當我第一次看到的圖形對象的故鄉的財產,我立刻想到我可以用它工作,如果我使用了昏迷的原因,讓這個剛剛啪的字符串:

La Paz 
Bolivia 

然後,我立即知道第一個對象代表一個城市,第二個代表一個國家。

但對於像美國的國家,而第一個元素將仍然代表一個城市,第二個代表的狀態,因此,我不能存儲從那裏記號化的數據。

我該如何正確使用iOS的FacebookSDK獲取國家,州,市?我抓我的頭,因爲大家誰設法做到這一點似乎得到它與PHP的工作,但我需要這在iPhone本身的工作。

編輯:爲了記錄在案,這是如何我試圖讓一切:

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

和接下來返回nil的:

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

回答

0

您可以通過獲得的位置位置屬性在FBGraphUser上。這會給你一個符合FBGraphPlace的對象。在FBGraphPlace構象異構體的位置屬性是符合FBGraphLocation協議,該協議具有諸如屬性的對象:

city 
country 
latitude 
longitude 
state 
street 
zip 

進口FacebookSDK/FacebookSDK.h在代碼

[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; 
            } 

           } ]; 
相關問題