22

我正在使用 oauth 将 facebook 用户登录到我的应用程序。我正在使用我的 FB 帐户和基本权限范围进行测试。Facebook 文档说我应该能够获得具有基本权限的“图片”,但是当我使用 API 访问它时,我的帐户没有“图片”属性。名字,姓氏等都在那里。

这是因为我的帐户无法公开查看吗?为什么会发生这种情况?我肯定附有个人资料图片。

这是我的脸书链接: http: //www.facebook.com/josh.nankin

4

5 回答 5

20

最好的方法是保留基本权限并在单独的步骤中触发对图像的请求。用这种方式询问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
      }
   }
}
于 2012-12-19T14:09:51.793 回答
10

正如 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 存储在数据库中时对其进行插值。

于 2015-04-05T11:55:37.573 回答
6

所以,仍然不确定为什么当你点击 API 上的 /me 路径时,graph api 没有返回图片属性,但是一旦你从 /me 获得用户名,你就可以很容易地在以下位置获取图片:

https://graph.facebook.com/USERNAME/picture

于 2012-07-31T21:23:33.463 回答
5
于 2012-08-01T09:18:04.390 回答
2

实际上,您不需要允许公共访问来获取个人资料图片,因为您可以获得 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';
于 2016-04-26T13:28:54.697 回答