如何获得朋友的脸书ID

时间:2014-07-17 09:32:26

标签: ios facebook social

我想得到朋友的facebookid。但似乎它发送不同的id

情况是我有一个朋友的名字" abc"当我加载朋友列表然后我得到以下响应的朋友" abc"来自facebook

<__NSCFArray 0xce76290>(
{
    id = 668201987254085;
    name = "abc";
}
)

我的脸书ID是&#34; 123764734754&#34;由facebook返回

我正在使用以下代码

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
SLRequest *friendsListRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                                   requestMethod:SLRequestMethodGET
                                                              URL:URLIFY(@"https://graph.facebook.com/me/friends")
                                                      parameters:nil];
friendsListRequest.account = facebookAccount;
[friendsListRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
    if (responseData) {
        NSLog(@"Got a response: %@", [[NSString alloc] initWithData:responseData
                                                           encoding:NSUTF8StringEncoding]);
        if (urlResponse.statusCode >= 200 && urlResponse.statusCode < 300) {
            NSError *jsonError = nil;
            NSDictionary *friendsListData = [NSJSONSerialization JSONObjectWithData:responseData
                                                                            options:NSJSONReadingAllowFragments
                                                                              error:&jsonError];
            if (jsonError) {
                NSLog(@"Error parsing friends list: %@", jsonError);
            } else {
                self.userList = friendsListData[@"data"];
            }
        } else {
            NSLog(@"HTTP %ld returned", (long)urlResponse.statusCode);
        }
    } else {
        NSLog(@"ERROR Connecting");
    }
    dispatch_async(dispatch_get_main_queue(), ^{
        [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
    });
}];

但是当我使用用户名&#34; abc&#34;登录时然后对于abc(当前登录用户)我得到不同的id说&#34; 10008772786278&#34;

同样的事情,当我登录然后我得到我的Facebook ID&#34; 123764734754&#34;但是当我的朋友&#34; abc&#34;登录然后在他的朋友列表回复他们得到了我的身份&#34; 897349579554&#34;

为什么会发生这件事?如何获取登录后返回的用户的相同facebook id

2 个答案:

答案 0 :(得分:6)

请尝试使用此代码。

[FBSession openActiveSessionWithReadPermissions:@[@"basic_info"] allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error){
        NSLog(@"Error :%@",error);
        if (session.isOpen && !error) {

            [FBRequestConnection startWithGraphPath:@"me/friends" parameters:nil HTTPMethod:@"GET" completionHandler:^(FBRequestConnection *connection,id result, NSError *error){

                if (!error) {
                    NSLog(@"result %@",result);
                    [array_firendList addObjectsFromArray:[result valueForKey:@"data"]];

                    NSLog(@"count %ld",(unsigned long)[array_firendList count]);
                }
 }];

答案 1 :(得分:1)

Facebook最近改变了很多东西,请看这里:https://developers.facebook.com/docs/apps/changelog

请参阅“应用范围的用户ID”,您不再获得真实的ID:

  

当人们登录某个版本时,为了更好地保护人们的信息   您的应用已升级为使用Graph API v2.0,Facebook   现在将发布一个应用程序范围的ID而不是该人的原始ID

同样重要的是:

  

/ me / friends端点不再包含a的完整列表   人的朋友。相反,它现在返回该人的列表   也在使用你的应用的朋友。

要确保始终获得应用范围ID,请使用/v2.0/{object}代替/{object}。例如,要获取已登录用户的ID,您可以使用/v2.0/me,要获取好友列表,您可以使用/v2.0/me/friends。仅当您的应用程序是在2014年5月之前创建时才需要这样做,如果您稍后创建它,它将仅使用v2.0。

另一个提示:确保您在同一平台上获取ID(包含/me/me/friends),当然还有相同的应用,请不要将您获得的ID与Graph API进行比较资源管理器(例如)与您在应用程序中获得的资源。