我正在使用Facebook API V2.0 JavaScript SDK创建一个网站,我想显示用户朋友的个人资料图片。 我已经设法使用图形API显示我的个人资料图片,但如果我登录了我的应用程序(我是管理员),我无法获取所有朋友的ID。如果我有身份证,我就可以显示他们的个人资料照片。
在graph explorer中,我检查了所有权限(用户数据权限+扩展权限)。我注意到如果我切换到API V1.0,我得到了朋友的许可,这正是我所喜欢的。
另外,我在Facebook开发者中为我的应用添加了一些权限>应用详情> App Center列出的平台>配置应用中心权限。 (user_friends + friends_birthday + friends_religion_politics + friends_relationships + friends_relationship_details + friends_location + friends_photos + friends_about_me)
到目前为止,我的HTML看起来像这样:
<fb:login-button scope="public_profile,email,user_friends,read_friendlists" onlogin="checkLoginState();">
加载Facebook SDK后,我有:
function getUserFriends() {
FB.api('me/friends?fields=first_name,gender,location,last_name', function (response) {
console.log('Got friends: ', response);
$("#friendslist").html('<img src="https://graph.facebook.com/'+ response.id+'/picture?type=large"/>');
});
}
但是,假设包含我所有朋友信息的数组是空的(参见图像:http://www.screencast.com/t/W02GaOm3h)
答案 0 :(得分:3)
如果你需要的只是他们的形象,可以在“taggable_friends”范围内找到。但请注意,此字段非常有限(按设计),您需要通过Facebook进行额外审核才能将其呈现给普通用户。
它包含:
包含常见相关字段的图片。网址,is_silhouette,高度和宽度。
function getUserFriends() {
FB.api('me/taggable_friends', function (response) {
console.log('Got friends: ', response.data);
$("#friendslist").html('<img src="'+response.data[0].picture.data.url+'"/>');
// maybe an $.each as well
// var friendMarkup = '';
// $.each(response.data, function(e, v) {
// friendMarkup += '<img src="' + v.picture.data.url +'" alt="'+ v.name +' picture"/>';
// }
// $("#friendlist").html(friendMarkup);
});
}
相关阅读:
https://developers.facebook.com/docs/graph-api/reference/v2.0/user/taggable_friends
https://developers.facebook.com/docs/opengraph/using-actions/v2.0 - 标记朋友和提及朋友部分
免责声明:我几天来一直在与这个问题作斗争而没有真正提及标签。我提交使用taggable_friends作为用户的综合,可导航列表被拒绝了,我推测(推测!)这是因为我没有实际标记。几天后,当我澄清并重新提交我在Facebook上进行审核的请求时,我会回到这一点。
- 编辑 -
这似乎是我的首次提交被拒绝的原因是因为我使用了一个特殊的开发网址,并没有明确指出为什么使用设置下的网址设置是不够的。这次我在提交的一般描述和逐步说明中明确指出并解释了这种推理。总而言之,在你提交的关于一切的内容中要格外清楚;你的理由是为什么你需要这个权限,他们如何访问它等等。只是为了确保它不会错过如果浏览。
答案 1 :(得分:2)