我想得到朋友的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
答案 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)
请参阅“应用范围的用户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进行比较资源管理器(例如)与您在应用程序中获得的资源。