开发者

FB.INIT not forcing login even with status:true js sdk

开发者 https://www.devze.com 2023-04-01 02:38 出处:网络
My app allows users to send requests using Facebook Requests Dialogue. I run the init as follow: <div id=\"fb-root\"></div>

My app allows users to send requests using Facebook Requests Dialogue.

I run the init as follow:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
    appId: '193078857407882',
    status: true,
    cookie: true,
     xfbml: false,
       });
</script>

From what I understand in the documentation the 'status: true' is supposed to check if the user is logged in to facebook.

However in my app when the user is not logged in it 开发者_运维知识库just shows the following error message:

An error occurred with hbg. Please try again later.

How can I force the application to check if the user is logged in and if not to log in?

Rails 3.0.7, Ruby 1.9.2, Js SDK


According to the Facebook docs for FB.getLoginStatus, if you want to receive the response from passing status: true to FB.init, then you need to subscribe to the auth.statusChange event:

While you can call FB.getLoginStatus any time (for example, when the user tries to take a social action), most social apps need to know the user's status as soon as possible after the page loads. In this case, rather than calling FB.getLoginStatus explicitly, its possible to check the user's status by setting the status: true parameter with you call FB.init.

To receive the response of this call, you must subscribe to the auth.statusChange event. The response object passed by this event is identical to that which would be returned by calling FB.getLoginStatus explicitly.

So in your code you would do something like

FB.Event.subscribe('auth.authResponseChange', function(response) {
    alert('The status of the session is: ' + response.status);
});

Except you would subscribe to auth.statusChange instead. Note, however, that according to the FB.Event.subscribe docs:

auth.statusChange() does not have a 'status' field.


You can check login status by calling FB.getLoginStatus

    FB.getLoginStatus(function(response) {
        if (response.authResponse) {
        // logged in and connected user
        } else {
            FB.login(function(res) {
                if (res.authResponse) {
                    // user logged in
                } else {
                    // user cancelled login
                }
            });
        }
    });
0

精彩评论

暂无评论...
验证码 换一张
取 消