2011-08-29 29 views
10

Tôi đang làm việc trên một ứng dụng Facebook được tích hợp với Facebook và đang cố gắng để có được phiên FB của người dùng. Theo tôi hiểu, một kịch bản sử dụng phổ biến như sau.FB.getLoginStatus không kích hoạt nếu người dùng không đăng nhập vào Facebook

  1. gọi FB.init()
  2. gọi FB.getLoginStatus cho nó một callback thích hợp.

Tôi chạy mã sau (id ứng dụng).

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
    <!-- 

    function init(){ 
     FB.init({ 
      appId : '9999999999999', 
      status : true, // check login status 
      cookie : true, // enable cookies to allow the server to access the session 
      xfbml : true, // parse XFBML 
      channelUrl : 'http://127.0.0.1:8888/channel.html', // custom channel 
      oauth : true // enable OAuth 
     }); 
     alert('going to call FB.getLoginStatus '); 

     FB.getLoginStatus(function(response) { 
      alert('whoo hoo!!! getLoginStatus called the callback'); 
     }); 
    } 
    init(); 
    //--> 
</script> 

Nếu người dùng đã đăng nhập vào Facebook trong cùng một phiên trình duyệt thì mọi thứ hoạt động như mong đợi - trả lại số dân _response.authResponse_. Tuy nhiên, nếu người dùng không đăng nhập vào Facebook thì cuộc gọi lại không được kích hoạt. Kiểm tra nhật ký mạng trình duyệt, tôi thấy rằng Facebook trả về phản hồi sau (yêu cầu từ http://www.facebook.com/dialog/oauth?).

Application Error: There was a problem getting data for the application you requested. The application may not be valid, or there may be a temporary glitch. Please try again later.

Tôi đã kiểm tra điều này trên Chrome và Firefox (Mac).


Cập nhật

Tôi muốn cảm ơn tất cả những người trả lời.

Ben nhận xét có câu trả lời.

Cảm ơn Ben - bạn đã cứu tôi rất nhiều thất vọng.

+12

Ứng dụng của bạn có ở Chế độ hộp cát không? Nếu vậy có vẻ như là một lỗi có thể gây ra điều này: http://bugs.developers.facebook.net/show_bug.cgi?id=19359 –

+0

Bạn đang sử dụng channelUrl làm loopback, hay chỉ là cho mẫu? Tôi không tin loopback sẽ làm việc cho chức năng đó. –

+0

việc sử dụng channelUrl được giải thích [ở đây] (https://developers.facebook.com/docs/reference/javascript/FB.init/). dường như nó sẽ tăng tốc thời gian tải và giúp tránh một số vấn đề. không thực sự quan tâm nếu nó làm bất cứ điều gì trong khi tôi phát triển, nên giúp đỡ khi tôi đi sống. –

Trả lời

11

Nguyên nhân là gần đây bug chỉ ảnh hưởng đến chế độ hộp cát. Tôi tắt chế độ hộp cát, và nó hoạt động như một sự quyến rũ.

+1

Tôi có thể hôn bạn! Cảm ơn nhiều. Tôi đã dành TẤT CẢ đêm cố gắng và cố gắng ra công cụ ... Tôi không hiểu những gì đã xảy ra ... Công việc tốt đẹp Facebook. 6 tháng sau, vấn đề vẫn còn ... –

+1

Liên kết giờ đã chết. –

0

Hãy thử buộc tải sự kiện:

FB.getLoginStatus(function(response) { 
    alert('whoo hoo!!! getLoginStatus called the callback'); 
}, true); 

Đó là tuyên bố trong FB.getLoginStatus.

Sự kiện có thể không được kích hoạt trong một số trường hợp.

+0

đã thử rằng một, không có niềm vui –

+0

Thêm đúng để buộc tải cố định vấn đề không có phản ứng cho tôi! –

Các vấn đề liên quan