2011-01-12 36 views
6

Đây là một câu hỏi rất ngớ ngẩn. Tôi là người mới bắt đầu với facebook Javascript SDK. Vì vậy, tôi đang cố gắng để tạo ra một hình ảnh hồ sơ cá nhân của người dùng để hiển thị tôi đã sử dụng mã nàyCách sử dụng FB.api ('/ me/picture') để tải hình ảnh hồ sơ

FB.api('/me', function(response) {  
    document.getElementById('login').style.display = "block"; 
    document.getElementById('login').innerHTML = '<img src="http://graph.facebook.com/' + response.id + '/picture" />'; 
}); 

mà làm việc tốt, nhưng tôi đang cố gắng để hiểu làm thế nào để sử dụng FB.api('/me/picture') để hiển thị hình ảnh.

Trả lời

0

FB.api('/me/picture') sẽ trả về một redirect đến URL hình ảnh, vì vậy nó sẽ không sử dụng cho bạn:
alt text
Cách bạn đang sử dụng có giá trị như đã đề cập trong documentation (Phần nghe hiểu). Có lẽ this có liên quan nhưng tôi không biết nếu nó hoàn toàn hợp lệ hay không.

+0

thật thú vị. Tôi tự hỏi việc sử dụng fb.api ('me/picture') là gì? Cảm ơn bạn rất nhiều vì đã trả lời – user573451

+0

@ user573451: vâng, tôi đoán api tồn tại cho các mục đích phía máy chủ '$ facebook-> api ('/ me/picture');', như lưu hình ảnh thô (có thể?) Hoặc một cái gì đó ... nhưng về phía khách hàng là mối quan tâm của bạn, tôi không nghĩ đến việc sử dụng nó và bạn đã sử dụng đúng cách. :-) – ifaour

12

/me/picture (hoặc /{user id}/picture) trả về một HTTP 301 chuyển hướng đến vị trí hình ảnh, do đó bạn có thể nhúng trực tiếp vào một <img src...

Nếu bạn muốn lấy địa chỉ URL và sử dụng nó cho mình bạn cần phải đặc biệt yêu cầu nó như là một lĩnh vực, thông qua:

/{user id}?fields=picture 

hoặc

/me/?fields=picture 

Bạn có thể bao gồm các lĩnh vực khác cũng vậy, nhưng Tôi giả sử bạn chỉ muốn có hình ảnh ngay bây giờ.

+0

hiện '/ me/picture' trả lại url (hoặc đối tượng)? Bạn nói rằng bạn có thể nhúng trực tiếp thẻ đó vào một thẻ ' LazerSharks

+1

'/me/picture' returns a HTTP 301 redirect to the image, '?fields=picture' returns the URL as a field of the JSON response – Igy

+0

interesting... wonder why they need to provide a http 301 redirect... – LazerSharks

9

Bạn có thể nhận được kích thước cụ thể của hồ sơ cá nhân pic cũng như:

FB.api("/me/picture?width=180&height=180", function(response) { 

     console.log(response.data.url); 

}); 

Xem Facebook documentation to see what different picture sizes you can get.

Và một bản demo hoàn chỉnh với đăng nhập tại địa chỉ: Get Facebook Profile Picture with Javascript SDK

+1

Loại tiện dụng nếu bạn không muốn chỉ định kích thước chính xác và chỉ muốn có một giá trị mờ như nhỏ, bình thường, lớn: https://developers.facebook.com/tools/explorer?method=GET&path=me%3Ffields%3Dpicture.type(normal)&version= – SilentDirge

1

này chắc chắn shot, Chứng minh được làm việc với facebook graph api 2.5. Đây là mẫu HTML Vui lòng xem các thay đổi tôi đã thực hiện trong hàm FB.api().

<!DOCTYPE html> 
    <html> 
    <head> 
    <title>Facebook Login JavaScript Example</title> 
    <meta charset="UTF-8"> 
    </head> 
    <body> 

    <!-- 
     Below we include the Login Button social plugin. This button uses 
     the JavaScript SDK to present a graphical Login button that triggers 
     the FB.login() function when clicked. 
    --> 
    <img src="" id="profileImage"/> 

    <div id="status"> 
    </div> 

    </body> 
    <script> 

     // This is called with the results from from FB.getLoginStatus(). 
     function statusChangeCallback(response) { 
      console.log('statusChangeCallback'); 
      console.log(response); 
      // The response object is returned with a status field that lets the 
      // app know the current login status of the person. 
      // Full docs on the response object can be found in the documentation 
      // for FB.getLoginStatus(). 
      if (response.status === 'connected') { 
       // Logged into your app and Facebook. 
       testAPI(); 
      } else if (response.status === 'not_authorized') { 
       // The person is logged into Facebook, but not your app. 
       document.getElementById('status').innerHTML = 'Please log ' + 
         'into this app.'; 
      } else { 
       // The person is not logged into Facebook, so we're not sure if 
       // they are logged into this app or not. 
       document.getElementById('status').innerHTML = 'Please log ' + 
         'into Facebook.'; 
      } 
     } 

     // This function is called when someone finishes with the Login 
     // Button. See the onlogin handler attached to it in the sample 
     // code below. 
     function checkLoginState() { 
      FB.getLoginStatus(function(response) { 
       statusChangeCallback(response); 
      }); 
     } 

     window.fbAsyncInit = function() { 
      FB.init({ 
       appId  : 'XXXXXXXXXXXX', 
       cookie  : true, // enable cookies to allow the server to access 
            // the session 
       xfbml  : true, // parse social plugins on this page 
       version : 'v2.5' // use graph api version 2.5 
      }); 

      // Now that we've initialized the JavaScript SDK, we call 
      //FB.getLoginStatus(). This function gets the state of the 
      // person visiting this page and can return one of three states to 
      // the callback you provide. They can be: 
      // 
      // 1. Logged into your app ('connected') 
      // 2. Logged into Facebook, but not your app ('not_authorized') 
      // 3. Not logged into Facebook and can't tell if they are logged into 
      // your app or not. 
      // 
      // These three cases are handled in the callback function. 

      FB.getLoginStatus(function(response) { 
       statusChangeCallback(response); 
      }); 

     }; 

     // Load the SDK asynchronously 
     (function(d, s, id) { 
      var js, fjs = d.getElementsByTagName(s)[0]; 
      if (d.getElementById(id)) return; 
      js = d.createElement(s); js.id = id; 
      js.src = "//connect.facebook.net/en_US/sdk.js"; 
      fjs.parentNode.insertBefore(js, fjs); 
     }(document, 'script', 'facebook-jssdk')); 

     // Here we run a very simple test of the Graph API after login is 
     // successful. See statusChangeCallback() for when this call is made. 
     function testAPI() { 
      console.log('Welcome! Fetching your information.... '); 
      FB.api('/me', function(response) { 
       console.log('Successful login for: ' + response.name); 
       console.log('Successful login for: ' + response.id); 
       console.log('Successful login for: ' + response.email); 
       var im = document.getElementById("profileImage").setAttribute("src", "http://graph.facebook.com/" + response.id + "/picture?type=normal"); 
       document.getElementById('username').innerHTML =response.name; 
      }); 
     } 

    </script> 
    </html> 
Các vấn đề liên quan