2011-08-31 45 views
8

Tôi đang cố gắng viết mã để kiểm tra xem người dùng có đăng nhập hay không, và thấy rằng có một phương pháp tích hợp trong FBJS API, được gọi là getLoginStatus()FB.getLoginStatus() không hoạt động

Tôi đã triển khai bên trong html, nhưng đối với một số cách, cảnh báo() bên trong getLoginStatus() không được kích hoạt.

Tôi cũng đã cố gắng thêm channelUrl tại init(), nhưng nó vẫn làm như vậy.

Dưới đây là mã tôi đã viết.

Có ai có thể giúp tôi không?

Cảm ơn trước!

<!-- Initialize FB API for use --> 
    <div id="fb-root"></div> 
    <script type="text/javascript"> 
    //var curLoc = window.location; 
    //var chanURL = curLoc.protocol + "//" + curLoc.hostname + ":" + 
    //curLoc.port + "/channel.html" 


     window.fbAsyncInit = function() { 
      FB.init({appId: '####', status: true, cookie: true, xfbml: true});  

      FB.getLoginStatus(function(response) { 
        if (response.session) { 
        // logged in and connected user, someone you know 
        alert('logged in'); 
        } else { 
        // no user session available, someone you dont know 
        alert('not logged in'); 
        } 
      }); 
     }; 
     (function() { 
      var e = document.createElement('script'); 
      e.type = 'text/javascript'; 
      e.src = document.location.protocol + 
       '//connect.facebook.net/en_US/all.js'; 
      e.async = true; 
      document.getElementById('fb-root').appendChild(e); 
     }()); 
    </script> 

Trả lời

1

Họ đã thay đổi. Chạy console.log ứng phó, và xem bạn cần phải kiểm tra như vậy:

if (response.status=='connected')) {...} 

chỉnh sửa: ở đây là hầu hết đăng nhập của tôi:

<?php 
// using Facebook PHP SDK (v.3.1.1) 
$facebook = new Facebook(array(
    'appId' => APP_ID 
    'secret' => SECRET 
)); 

// See if there is a user from a cookie 
$user = $facebook->getUser(); 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
} catch (FacebookApiException $e) { 
    echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>'; 
    $user = null; 
} 
} 
?> 

và js trong cơ thể:

<div id="fb-root"></div> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId : '<?php echo $facebook->getAppId(); ?>', 
     status : true, 
     cookie : true, 
     oauth: true, 
     channelUrl : MY_CHANNEL_URL, 
     xfbml : true 
    }); 

    FB.getLoginStatus(function(response) { 
     console.log(response); 
     if ((response.status)&&(response.status=='connected')) { 
      loadStreamInto ($("#FBmessages")); 
     } else { 

     } 
    }); 
}; 
</script> 
+0

Cảm ơn bạn đã trả lời Bobbi. Tôi đã thay đổi câu lệnh if thành response.status, nhưng vẫn không có phản hồi, tôi cũng đã sử dụng console.log, nhưng nó không xuất ra bất kỳ lệnh nào trên firebug. Tôi cũng đã cố gắng sử dụng authResponse bằng cách bật oauth, nhưng tương tự. Có vấn đề gì nếu tôi sử dụng localhost để kiểm tra nó? – darangho

+1

FB sẽ khiếu nại khi bạn cố gắng đăng nhập lại trực tiếp nếu đường dẫn của bạn sai. Tôi nghĩ bạn sẽ nhận thấy điều đó. Tôi sử dụng localhost tất cả các thời gian, chỉ cần nhập đó là url trang web ứng dụng của bạn trên trang nhà phát triển của bạn. RE console.log. Nếu bạn không nhận được gì, hãy xem liệu fbAsyncInit của bạn có bị gọi hay không, gỡ lỗi từ đó. –

0

response.status == 'connected' chỉ xảy ra nếu bạn đặt oauth: true trong fb.init

mã có vẻ tốt với tôi nên hoạt động như không chắc chắn lý do tại sao nó không hoạt động

+0

cảm ơn cho nhận xét user911086. Tôi cũng không biết tại sao nó không hoạt động. – darangho

1

Tôi giả sử bạn đã thay thế appId thực tế bằng #### trong mã bạn đã liên kết. Nếu không, đó là vấn đề của bạn.

Giả sử bạn đã đặt appId của mình tại đây, nó có thể liên quan đến thực tế là bạn đang thử nghiệm trên máy chủ cục bộ. Tôi tin rằng javascript sẽ không hoạt động nếu url đang được phân phát không khớp với url được liên kết với ứng dụng cho Id ứng dụng nhất định

8

Tôi đã có ngày này và vấn đề là tôi KHÔNG đã đăng nhập vào Facebook VÀ Ứng dụng của tôi ở chế độ Hộp cát. Maaaaybe cũng giống như ở đây, longshot nhưng vẫn muốn gợi ý nó.

Lưu ý: Các kết hợp có thể so sánh sẽ không hoạt động đang được đăng nhập trong Facebook với tư cách là người dùng thử không có quyền truy cập vào ứng dụng được đề cập hoặc đang đăng nhập vào Facebook với tư cách người dùng không phải là người dùng thử ứng dụng ở chế độ hộp cát.

2

Tôi gặp sự cố tương tự. Tôi đã gây ra bởi 'Chế độ Sandbox' trong cài đặt FB App. Khi được kích hoạt, nó sẽ không kích hoạt phản hồi getLoginStatus(). Có thể bởi vì nó không được biết nếu bạn thực sự là một nhà phát triển đã đăng ký khi chưa đăng nhập.

4

BTW. Họ đã thay đổi nó một lần nữa. Nó bây giờ là:

response.authResponse

và không response.session nữa.

0

Tôi không nói điều này sẽ phù hợp với bạn, nhưng tôi đã gặp sự cố tương tự với ứng dụng được triển khai của mình.Nó hoạt động tốt trên localhost của tôi nhưng không hoạt động khi được triển khai tới Heroku. Tôi nhận ra rằng trong cài đặt ứng dụng Facebook, tôi đã có tất cả các url được đặt làm địa chỉ cục bộ - khi tôi thay đổi điều này thành url ứng dụng được triển khai, nó đã sửa nó.

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