2013-11-02 5 views
5

मैं FBGraphObject का उपयोग कर उपयोगकर्ता का देश, राज्य और शहर प्राप्त करने का प्रयास कर रहा हूं।आईओएस के लिए फेसबुकएसडीके से देश, राज्य, शहर प्राप्त करना

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

(मेरे शहर ला पाज़ कहा जाता है देश बोलीविया में,): लौटे FBGraphObject जानकारी का निम्न भाग में शामिल है।

यह आश्चर्यजनक रूप से काम कर सकता है, अगर यह वास्तव में "राज्य" वापस कर देगा। विचिटा, संयुक्त राज्य अमेरिका में कान्सास, से किसी ने मेरे एप्लिकेशन भाग गया, तो परिणाम होगा:

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

(यही कारण है कि व्यक्ति के शहर विचिटा, विचिता के राज्य है, जो संयुक्त राज्य अमेरिका में है में है ... समस्या है FBGraphObject मुझे नहीं बताता है, यह संयुक्त राज्य अमेरिका में है)।

जब मैं पहली बार ग्राफ वस्तु के गृहनगर संपत्ति देखा, मैं तुरंत सोचा कि मैं इसके साथ काम कर सकता है, तो मैं सिर्फ कोमा टोकन का उपयोग, इस पाने के लिए स्ट्रिंग splat:

La Paz 
Bolivia 

तो मैं तुरंत पता था कि पहली वस्तु एक शहर का प्रतिनिधित्व करती है, और दूसरा देश का प्रतिनिधित्व करता है।

लेकिन संयुक्त राज्य अमेरिका जैसे देश के लिए, जबकि पहला तत्व अभी भी एक शहर का प्रतिनिधित्व करेगा, दूसरा दूसरा राज्य का प्रतिनिधित्व करता है, और इसलिए, मैं वहां से टोकनयुक्त डेटा संग्रहीत नहीं कर सकता।

आईओएस के लिए फेसबुकएसडीके का उपयोग करके मैं देश, राज्य, शहर को कैसे ठीक से प्राप्त कर सकता हूं? मैं अपने सिर को खरोंच कर रहा हूं क्योंकि ऐसा करने में कामयाब हर कोई इसे PHP के साथ काम करने के लिए प्रतीत होता है, लेकिन मुझे इसे आईफोन पर काम करने की ज़रूरत है।

संपादित करें: रिकॉर्ड के लिए, यह कैसे मैं सब कुछ पाने के लिए कोशिश कर रहा हूँ है:

[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 conformer पर स्थान संपत्ति एक वस्तु है कि 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; 
            } 

           } ]; 
संबंधित मुद्दे