2012-07-31 47 views
17

我使用oauth將facebook用戶登錄到我的應用程序。我正在使用我的FB帳戶和基本權限範圍進行測試。 Facebook文檔說,我應該可以通過基本權限獲得「圖片」,但是當我使用API​​訪問它時,我的帳戶沒有「圖片」屬性。雖然有名字,姓氏等等。facebook oauth,沒有基本權限的圖片

這是因爲我的帳戶沒有公開顯示?爲何會發生這種情況?我絕對有一張個人資料照片。

這裏是我的FB鏈接:http://www.facebook.com/josh.nankin

+0

剛剛用另一個帳戶確認了這一點。同樣的問題也是。 – 2012-07-31 21:12:02

回答

4

所以,還是不知道爲什麼圖形API不返回的圖片屬性,當你打在API的/我的路徑,但一旦你/我有了用戶名,

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

+0

是的...我不再真正關注文檔了。這太混亂了,你會得到與FQL和OG截然不同的結果。查看返回的字段的最簡單方法是使用資源管理器https://developers.facebook。com/tools/explorer – 2012-07-31 22:14:02

+3

要獲得更大的尺寸,您還可以使用:https://graph.facebook.com/USERNAME/picture?type=large – simoes 2013-05-17 02:19:04

+2

您也可以使用用戶標識號而不是用戶名 – 2014-05-14 20:34:53

4

https://developers.facebook.com/docs/reference/api/user/:你可以得到的圖片很容易地

「picture: The URL of the user's profile pic (only returned if you explicitly specify a 'fields=picture' param)」

你可能沒有忽略用粗體標出的部分...?

+0

這不再是這種情況,這句話不再在文檔中。 – 2014-06-06 15:13:03

17

最好的方法是保持基本權限並在單獨的步驟中激發圖像請求。問圖形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 
     } 
    } 
} 
+0

似乎不工作了:https://graph.facebook.com/914431778578699?fields=picture.type(large)返回錯誤:'需要訪問令牌來請求這個資源' – stkvtflw 2017-03-18 13:00:58

1

其實你不需要允許公共訪問來獲取個人資料圖片,因爲你可以獲得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改變類型類型=小它返回一個低分辨率圖像。

var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=small';