1

ユーザーにFBクレデンシャルの入力を求めるポップアップを生成する[Facebookでサインイン]ボタンがあります。

ユーザーがすでに私のアプリに参加し、アプリを離れてから戻ってきた場合(Facebookにログインしたまま)、ユーザーが[Facebookでサインイン]をクリックしてポップアップを表示しないようにしたいと思います。

現時点では、上記の段落の状況を考えると、ポップアップが1秒間開いてから、ページがアプリのログイン状態にリダイレクトされます。

私は以下のコードを実装しました-私はJavascriptに関しては完全な初心者なので、答えは明らかかもしれませんが、私は何をすべきかわかりません!

window.fbAsyncInit = function() {
     FB.init({
       appId  : '372191216164729',
       status : true, // check login status
       cookie : true, // enable cookies to allow the server to access the session
       xfbml  : true  // parse XFBML
     });
   };

   (function(d) {
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     d.getElementsByTagName('head')[0].appendChild(js);
   }(document));

   $(function() {
     $('#fb_connect').click(function(e) {
       e.preventDefault();

       FB.login(function(response) {                    
         if (response.authResponse) {
           // $('#connect').html('Connected! Hitting OmniAuth callback (GET /auth/facebook/callback)...');

                    //this might not be the best way to do this ...
                    $('#welcome_form').submit();
           // since we have cookies enabled, this request will allow omniauth to parse
           // out the auth code from the signed request in the fbsr_XXX cookie
           // $.getJSON('/auth/facebook/callback', function(json) {
           //             $('#connect').html('Connected! Callback complete.');
           //             $('#results').html(JSON.stringify(json));
           //           });
         }
       }, { scope: 'email, read_stream' });
     });
   });
4

1 に答える 1

4

When the page loads, after you then load and initialize the fb sdk use the FB.getLoginStatus method to check the user status. If the user is already logged in and authorized your app then the response should have the access token, user id, etc.

For example:

FB.getLoginStatus(function(response) {
    if (response.status === "connected") {
        // use the response.authResponse
    }
    else if (response.status === "not_authorized") {
        FB.login(function(response) {
            ...
        }, { scope: "email, read_stream" });
    }
    else {
        // user not logged in to facebook
    }
});
于 2012-04-26T22:26:44.887 に答える