Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果用户已经登录FB,如何阻止我的Facebook登录弹出窗口出现?_Javascript_Facebook_Ruby On Rails 3_Omniauth - Fatal编程技术网

Javascript 如果用户已经登录FB,如何阻止我的Facebook登录弹出窗口出现?

Javascript 如果用户已经登录FB,如何阻止我的Facebook登录弹出窗口出现?,javascript,facebook,ruby-on-rails-3,omniauth,Javascript,Facebook,Ruby On Rails 3,Omniauth,我有一个“使用Facebook登录”按钮,它会生成一个弹出窗口,要求用户输入FB凭据 如果用户已经加入我的应用程序,离开应用程序,然后回来(同时仍登录到Facebook),我希望用户能够单击“使用Facebook登录”,而不显示弹出窗口 此时,鉴于上面段落中的情况,弹出窗口会打开一秒钟,然后页面重定向到应用程序的登录状态 我已经实现了下面的代码——对于Javascript,我是一个十足的傻瓜,所以答案很明显,我不知道该怎么做 window.fbAsyncInit = function() {

我有一个“使用Facebook登录”按钮,它会生成一个弹出窗口,要求用户输入FB凭据

如果用户已经加入我的应用程序,离开应用程序,然后回来(同时仍登录到Facebook),我希望用户能够单击“使用Facebook登录”,而不显示弹出窗口

此时,鉴于上面段落中的情况,弹出窗口会打开一秒钟,然后页面重定向到应用程序的登录状态

我已经实现了下面的代码——对于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' });
     });
   });

加载页面时,在加载并初始化fb sdk之后,使用该方法检查用户状态。 如果用户已登录并授权您的应用程序,则响应应具有访问令牌、用户id等

例如:

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
    }
});

加载页面时,在加载并初始化fb sdk之后,使用该方法检查用户状态。 如果用户已登录并授权您的应用程序,则响应应具有访问令牌、用户id等

例如:

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
    }
});

谢谢我的下一个问题是,当您说//使用response.authResponse时,应该做什么。我正在使用一个名为omniauth的Rails gem,它说omniauth应该能够解析auth代码。考虑到这一点,我是否需要填写上面的代码(在您放置注释的地方)?我不知道omniauth是什么,我从未使用过rails。但听起来您好像在尝试实现一个,但使用javascript它是一个客户端身份验证。一旦进入“//使用response.authResponse”部分,用户已经通过身份验证,该过程就完成了,您可以开始使用jd sdk进行api调用。如果你想在服务器上使用这种功能,那么就使用服务器端身份验证。好的,谢谢,我想你已经给了我足够的时间来使用它。谢谢你的帮助,谢谢!我的下一个问题是,当您说//使用response.authResponse时,应该做什么。我正在使用一个名为omniauth的Rails gem,它说omniauth应该能够解析auth代码。考虑到这一点,我是否需要填写上面的代码(在您放置注释的地方)?我不知道omniauth是什么,我从未使用过rails。但听起来您好像在尝试实现一个,但使用javascript它是一个客户端身份验证。一旦进入“//使用response.authResponse”部分,用户已经通过身份验证,该过程就完成了,您可以开始使用jd sdk进行api调用。如果你想在服务器上使用这种功能,那么就使用服务器端身份验证。好的,谢谢,我想你已经给了我足够的时间来使用它。谢谢你的帮助。