从FacebookSDK for iOS获取国家、州/省和城市信息

5

我正在尝试使用FBGraphObject获取用户的国家、州和城市信息。返回的FBGraphObject包含以下信息:

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

我的城市叫做拉巴斯,位于玻利维亚。

如果能够返回“州”的话,这将非常完美。如果来自美国堪萨斯州威奇托市的用户使用我的应用程序,结果将会是:

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

那个人所在的城市是威琪塔,位于美国中部的威琪塔州......问题是FBGraphObject没有告诉我,这是在美国。

当我第一次看到图形对象的家乡属性时,我立刻想到如果我只需要使用逗号标记来分割字符串,就可以得到以下结果:

La Paz
Bolivia

然后,我会立即知道第一个对象代表一个城市,第二个对象代表一个国家。但是对于像美国这样的国家,尽管第一个元素仍然代表一个城市,但第二个元素代表一个州,因此,我无法存储从那里分词出来的数据。如何使用FacebookSDK for iOS正确获取国家、州和城市?我现在感到困惑,因为每个成功实现该功能的人似乎都是用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
1个回答

0

你可以通过FBGraphUser上的location属性获取位置。这将给你一个符合FBGraphPlace协议的对象。FBGraphPlace符合者上的location属性是一个符合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;
                                  }

                              } ];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接