我正在使用 oauth 将 facebook 用户登录到我的应用程序。我正在使用我的 FB 帐户和基本权限范围进行测试。Facebook 文档说我应该能够获得具有基本权限的“图片”,但是当我使用 API 访问它时,我的帐户没有“图片”属性。名字,姓氏等都在那里。
这是因为我的帐户无法公开查看吗?为什么会发生这种情况?我肯定附有个人资料图片。
这是我的脸书链接: http: //www.facebook.com/josh.nankin
我正在使用 oauth 将 facebook 用户登录到我的应用程序。我正在使用我的 FB 帐户和基本权限范围进行测试。Facebook 文档说我应该能够获得具有基本权限的“图片”,但是当我使用 API 访问它时,我的帐户没有“图片”属性。名字,姓氏等都在那里。
这是因为我的帐户无法公开查看吗?为什么会发生这种情况?我肯定附有个人资料图片。
这是我的脸书链接: http: //www.facebook.com/josh.nankin
最好的方法是保留基本权限并在单独的步骤中触发对图像的请求。用这种方式询问graph api:
https://graph.facebook.com/[fb_user_id]?fields=picture.type(small)
大图:
https://graph.facebook.com/[fb_user_id]?fields=picture.type(large)
您将收到如下 JSON 响应:
{
"id": "100001XXXXXXXXX",
"picture": {
"data": {
"url": "http://profile.ak.fbcdn.net/hprofile-XXXX/41524_1000018XXX51507_XXXX3_q.jpg",
"is_silhouette": false
}
}
}
正如 Josh Nankin 所指出的,您可以直接从 facebook 返回的基本标准 OAuth 信息中获取个人资料照片 URL,但需要澄清一下。
您仍然可以使用返回的用户 ID 来请求照片,例如:
https://graph.facebook.com/914431778578699/picture?type=large
是相同的
https://graph.facebook.com/dark.eye.1/picture?type=large
这样,只需发出一个请求,因为您可以在将照片 URL 存储在数据库中时对其进行插值。
所以,仍然不确定为什么当你点击 API 上的 /me 路径时,graph api 没有返回图片属性,但是一旦你从 /me 获得用户名,你就可以很容易地在以下位置获取图片:
实际上,您不需要允许公共访问来获取个人资料图片,因为您可以获得 USER_ID。通过 USER_ID,您可以轻松导航到个人资料图片。
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
console.log('Welcome! Fetching your information.... ');
var url = '/me?fields=id,name';
FB.api(url, function(response) {
var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=large';
document.getElementById("id_of_link_tag").href = linkpp;
});
});
}
您可以将变量 linkpp 中的类型更改为type =small以返回低分辨率图像。
var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=small';