1

使用 Graph API,如果提供了 ID,我们可以访问任何对象(如用户、事件、照片等)的图像。

因此,如果我需要检索我的用户个人资料图片,我可以通过

https://graph.facebook.com/100000109274242/图片

我的 ID 是 100000109274242

上面的 URL 将我重定向到https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/49592_100000109274242_1437093998_q.jpg

这是我的图像的实际 URL。我需要编写一个 JS 函数,我需要使用它来检索照片的实际 URL。我什么也做不了,因为我不明白从哪里开始使用 JS。

4

2 回答 2

1
  • 首先加载并初始化 Facebook JavaScript SDK:https ://developers.facebook.com/docs/reference/javascript/ (加载部分)
  • 仅在 JS SDK 初始化时才应与 FB api 交互。这是一个关闭电话的示例:

                FB.api(100000109274242+'/picture',function(userImage){
                    alert(userImage);
                });
    

UPD 完整示例。HTML:

<div id="fb-root">
  <!-- you must include this div for the JS SDK to load properly -->
</div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

    FB.api(100000109274242+'/picture',function(userImage){
         alert(userImage);
    });
  };

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>
于 2012-04-12T14:40:49.647 回答
0

如果您只想显示图像,您可以直接使用第一个链接:

<img src="https://graph.facebook.com/100000109274242/picture">

由于这是一个 302 重定向,浏览器将处理它并显示最终图片,而无需您使用 JS 解决它。我不确定您是否真的想要 JS 中的 url,或者您认为您需要解决它。

顺便说一句,如果您有兴趣,这里是该 url 的标头响应,它发回一种 jpeg 类型并重定向到实际图形。

curl --HEAD https://graph.facebook.com/100000109274242/picture
找到 HTTP/1.1 302
...
内容类型:图片/jpeg
过期:2000 年 1 月 1 日星期六 00:00:00 GMT
位置:https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/49592_100000109274242_1437093998_q.jpg
...
于 2012-04-12T18:39:28.103 回答