Facebook Graph API 我/朋友啥都不返回

Posted

技术标签:

【中文标题】Facebook Graph API 我/朋友啥都不返回【英文标题】:Facebook Graph API me/friends returns nothingFacebook Graph API 我/朋友什么都不返回 【发布时间】:2016-02-19 18:10:51 【问题描述】:

我有一个使用 Facebook 登录的应用程序,登录和获取基本个人资料信息工作正常。但是,当我尝试获取 Facebook 朋友(仅返回也使用相同应用程序的朋友)时,我从 Facebook API 获得[object Object]。我设置了朋友的权限(根据我的应用的 Facebook 开发者页面)。

我的代码是这样的(我使用的是Phonegap插件,但代码类似于Facebook API的JS版本):

// Login function (permissions included)
var login = function () 
    if (!window.cordova) 
        var appId = prompt("123456789101112", "");
    
    facebookConnectPlugin.login(["email, user_friends"],
        // SUCCESS
        function (response) 
            alert('Login successful!');
        ,
        // FAILURE
        function (response) 
            alert('Login failed')
        
    );


// Get the friends
var getFacebookFriends = function() 
    facebookConnectPlugin.api("me/friends",
    // FAILURE
    function(response) 
        alert('Retrieving Facebook friends failed');
    ,
    // SUCCESS
    function(response) 
        alert(JSON.stringify('Facebook friends: ' + response));
    );

警报显示Facebook friends: [object Object]。我确定我有一个朋友也使用相同的权限登录了该应用程序。他没有出现在列表中,只有空的[object Object]。为什么我收到此回复而不是朋友列表?

【问题讨论】:

【参考方案1】:

它不是空的,它是一个 JSON 对象。你只需要正确解码:

alert('Facebook friends: ' + JSON.stringify(response));

你也可以只使用console.log:

console.log(response);

只需在您的应用程序运行时将您的手机连接到计算机,然后使用chrome://inspect 像网站一样调试它(因为它就是这样)。

【讨论】:

【参考方案2】:

如果你想定义一个函数,你可以这样做:

function name() 
...

是的,您可以保留那个 var 关键字。另外,你应该试试这个:

function getFacebookFriends() 
    facebookConnectPlugin.api('/me/friends', function(response) 
        if(response.data) 
            $.each(response.data,function(index,friend) 
                alert(friend.name + ' - FB ID:' + friend.id);
            );
         else 
            alert("Unable to return Facebook friends!");
        
    );

【讨论】:

不知道你为什么提到 var 关键字(在这种情况下并不重要),但我不会使用 jquery 来完成那个简单的任务......【参考方案3】:
I just Hope if this could help you !! 

[FBSDKProfile enableUpdatesOnAccessTokenChange:YES];  in - (void)viewDidLoad Method  

- (IBAction)Loginwithfacebookaction:(id)sender


    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    [login logOut];
    [login logInWithReadPermissions:@[@"public_profile", @"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) 

        if (error)
        

            // There is an error here.

        
        else
        
            if(result.token)   // This means if There is current access token.
            
                // Token created successfully and you are ready to get profile info
                [self Method];
            
        
    ];
  

-(void)Method 

    FBSDKGraphRequest *requestMe = [[FBSDKGraphRequest alloc]initWithGraphpath:@"/me?fields=first_name, last_name, picture, email" parameters:nil];

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

    [connection addRequest:requestMe completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 

        if(result)
        
            if ([result objectForKey:@"email"]) 
                email = [result objectForKey:@"email"];

            NSLog(@"Email: %@",[result objectForKey:@"email"]);
                 [[NSUserDefaults standardUserDefaults] setObject:email forKey:@"useremail"];

            
            if ([result objectForKey:@"first_name"]) 

                NSLog(@"First Name : %@",[result objectForKey:@"first_name"]);
                name = [result objectForKey:@"first_name"];
                [[NSUserDefaults standardUserDefaults] setObject:name forKey:@"userNameLogin"];
            
            if ([result objectForKey:@"id"])
            
            NSLog(@"User id : %@",[result objectForKey:@"id"]);

            
                  


    ];
    [connection start];

【讨论】:

以上是关于Facebook Graph API 我/朋友啥都不返回的主要内容,如果未能解决你的问题,请参考以下文章

Facebook Graph API 不返回每个朋友的分数

Facebook Graph API 获取应用用户的朋友

如何邀请朋友参加活动? iPhone中的Facebook Graph API

我可以通过 facebook Graph API 获取朋友在他们的个人资料上分享的内容吗

Facebook Graph API:工作历史

Facebook Graph API:如何获得在线朋友/或最后 X 分钟活跃