2011-12-15 117 views
7

總結前:獲取的Facebook用戶的個人資料圖片驗證應用

我通過圖形API連接至Facebook網站上的工作。有人問我是否可以獲取用戶的個人資料圖片,如果他們已經登錄到Facebook,但在用戶認證應用程序之前。這可能嗎?

編輯: 我知道你可以得到由去http://graph.facebook.com/USERNAME_OR_USERID/picture?type=large人的個人資料圖片,但我將能夠獲得用戶的用戶名或ID,如果他們登錄到Facebook上,但並沒有授權我的應用程序?


詳情:

按照Facebook API User documentation,你可以得到他們的Facebook ID不使用的access_token,我知道,如果你直接到用戶的/我的網址,你可以看到他們的基本信息。有了Facebook ID,我可以抓住他們的個人資料圖片。

但是,當我嘗試從網站使用以下代碼調用它時,出現OAuthException錯誤。

FB.api('/me', function(response) { 
    console.log(response); 
}); 

我猜他們要驗證的應用程序,但我想看看是否我可能已經錯過了讓他們的個人資料PIC的一種方式。

感謝您的幫助!

+0

沒關係。我找到了答案。你不能得到他們的用戶名或ID:http://facebook.stackoverflow.com/questions/7520300/facebook-app-without-prompted-authentication – 2011-12-16 15:05:24

回答

7

無需身份驗證即可獲取每個人的Facebook個人資料圖片。

您只需致電http://graph.facebook.com/USERID/picture?type=large即可。 此網址會將您重定向到圖片網址。

編輯︰用戶名查詢不再被允許,所以我更新USERNAME_OR_USERIDUSERID

+0

謝謝,cebrici。我知道這個URL,但是如果沒有他們的身份驗證,我將如何獲得他們的用戶名或ID? – 2011-12-16 14:29:19

+2

我發現你不能在沒有認證的情況下獲得他們的用戶名或ID。你的回答寫得更好,所以我會給你答案。 – 2011-12-16 15:06:34

2

是的,你可以得到..

http://graph.facebook.com/naseer.panhwer/picture?type=normal 
http://graph.facebook.com/naseer.panhwer/picture?type=small 
http://graph.facebook.com/naseer.panhwer/picture?type=large 
0

您可以使用應用程序ID和祕密如下生成的訪問令牌:

https://graph.facebook.com/oauth/access_token?client_id= {} APPID & client_secret = {} appSecret & grant_type = client_credentials

注意:不要在客戶端執行此操作,因爲您有可能使應用程序被劫持。

生成的令牌可以是用戶使用圖API查詢用戶而無需登錄提示。

0

如何獲得FB圖片W/O的OAuth或訪問令牌:

我試圖讓一些成員的唯一圖像,但我被卡住了,然後寫了這個片段,併爲我工作,

HTML標記

<img src="getFbImage.php?id=<fbid_of_the_person>&type=[small|large]" /> 

的PHP代碼

<?php 

    $remoteImage = !isset($_GET['id']) ? "../images/default.png" : getImg($_GET['id']); 
    $imginfo = getimagesize($remoteImage); 
    header("Content-type: ".$imginfo['mime']); 
    readfile($remoteImage); 

    function getImg($id){ 
     $dom = new DOMDocument; 
     $dom->loadHTML(getData($id)); 
     $tags = $dom->getElementsByTagName('img'); 
     $img = ''; 
     foreach ($tags as $tag) { 
      $img =$tag->getAttribute('src'); 
      if($img=='') 
       continue; 
      else if(isset($_GET['type']) && $_GET['type']=='large') 
       break; 
     } 
     //This iteration has a lot of images try your luck. 
     return $img; 
    } 

    function getData($id){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,'https://www.facebook.com/photo.php?fbid='.$id); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 Firefox/39.0'); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     return $data; 
    } 
?> 

我只需要使用一張30x30的圖片,而且我得到了我想要的。看看它也提供了一個大的圖像。

乾杯! Joy

相關問題