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 我/朋友啥都不返回的主要内容,如果未能解决你的问题,请参考以下文章
如何邀请朋友参加活动? iPhone中的Facebook Graph API