获取 Facebook 好友返回空

Posted

技术标签:

【中文标题】获取 Facebook 好友返回空【英文标题】:Get Facebook Friends returns empty 【发布时间】:2015-06-29 08:08:01 【问题描述】:

我正在尝试为我的应用获取好友列表,但控制台返回的内容如下:

    
    data =     (
    );
    summary =     
        "total_count" = 1221;
    ;

总数正确,但没有显示我的任何朋友?

我在 facebook 开发者门户上创建了两个测试用户,他们都使用我的应用程序登录,他们是我在 facebook 上的朋友,他们的数据不应该显示吗?

这是我请求权限的代码,每次用户登录时都会调用这个类。

@implementation UploadUser

NSString *userName;
NSString *userId;
NSString *userGender;
//UIImage *userPicture;
NSString *userPicture;

NSMutableURLRequest *urlRequest;

//NSData *imageData;
//NSData *pictureData;
//NSData *tempData;

//Retrieves users name, gender and id
-(void)getUserInfo 

    FBSDKGraphRequest *requestUser = [[FBSDKGraphRequest alloc]initWithGraphpath:@"me" parameters:nil];

    FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init];

    [connection addRequest:requestUser completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
        userName = result[@"name"];
        userGender = result[@"gender"];
        userId = result[@"id"];

        if (connection) 

            if (!error) 

                [self setUserData];
                [self uploadUser];

            
        else if (!connection) 
            NSLog(@"Get User %@",error);
        
    ];
    [connection start];


    //Get Friends
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                  initWithGraphPath:@"/me/friends"
                                  parameters:nil
                                  HTTPMethod:@"GET"];
    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                          id result,
                                          NSError *error) 
        if (connection) 
            NSLog(@"Friends = %@",result);


        else if (!connection) 
              NSLog(@"Get Friends Error");
        
    ];






//Saves user data to class
-(void)setUserData 
    DataManager *dm = [DataManager sharedInstance];
    [dm setObject:userName forKey:@"userName"];
    [dm setObject:userGender forKey:@"userGender"];
    [dm setObject:userId forKey:@"userId"];



    NSLog(@"%@",userId);
    NSLog(@"%@",userName);
    NSLog(@"%@",userGender);


//Uploads user data online
-(void)uploadUser 
    PFUser *user = [PFUser currentUser];
    user[@"name"] = userName;
    user[@"id"] = userId;
    user[@"gender"] = userGender;
    [user saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) 
        if (succeeded) 
            NSLog(@"User Data Uploaded :)");
         else 
            //Handle Error
            NSLog(@"User Upload Error... %@",error);
        
    ];

为什么我的查询没有返回我的朋友?是因为我的朋友无权使用我的应用程序吗?是否没有正确询问我的权限?

【问题讨论】:

【参考方案1】:

您还可以使用 Graph API Explorer 来快速检查您的请求是否有效: https://developers.facebook.com/tools/explorer/

如果您想检查您的朋友,您应该让您的朋友也使用此链接并获取令牌。这样facebook系统就知道你的好友登录了Graph API app,你就会得到好友列表。

【讨论】:

嗨,我得到了我的“应用程序”当前访问令牌,并且图形浏览器返回了。 "error": "message": 必须使用活动访问令牌来查询有关当前用户的信息。, "type": OAuthException, "code": 2500 这是导致我的问题的错误吗?跨度> @Josh 您是否尝试单击“获取令牌”按钮,然后选择 user_about_me 和 user_friend 并单击“获取访问令牌”。在此之后,Facebook 会询问您是否允许,您应该说“确定”,然后尝试再次单击“提交”。 当我这样做时,它只返回我的“public_profile”和“user_about_me”信息,而不是我的朋友列表? @Josh 你应该说你的一个朋友也去这个链接并获得访问令牌。只有在此之后,您才会获得朋友列表。而且只会有一个朋友。 对,但这将如何解决我的问题,因为我无法让每个用户都获得这样的访问令牌?【参考方案2】:

自 Graph API v2.0 起,您也只能获得通过user_friends 授权您的应用程序的朋友。这已经是无数 *** 线程的主题,例如:Facebook Graph Api v2.0+ - /me/friends returns empty, or only friends who also use my app

【讨论】:

我明白了,我的问题是我登录了我的朋友并请求user_friends 许可?所以不应该退回我的朋友,因为他们在技术上是授权的。【参考方案3】:

查看这个Get Facebook friends

【讨论】:

以上是关于获取 Facebook 好友返回空的主要内容,如果未能解决你的问题,请参考以下文章

请求 Facebook 好友返回空

Facebook Graph API 好友列表总是返回空,即使好友中有注册的应用用户

通过图形 API 获取 facebook 好友的完整列表

我如何在 iOS sdk 的 facebook 上获取好友生日和用户生日

如何使用 facebook SDK 获取总 facebook 好友列表? [复制]

Facebook Graph API 2.5 - 无法访问好友