登录按钮:当用户已经在Facebook登录时无法使用。

3

编辑:解释: 什么时候应该出现Facebook登录按钮,什么时候不应该?在Facebook 教程页面 上并没有准确地解释。上面写着:“如果用户已经登录,则不会显示登录按钮。”但对我来说,只有当用户同时在Facebook个人资料和连接到我的网站上的我的Facebook应用程序中都已经登录时,才是正确的!当你仅在Facebook个人资料中登录时,那个按钮不会被删除,这与Facebook教程中所述的不同。我是对的吗?

能否有人帮忙? 谢谢 托马斯

//旧信息 我在我的网站上有Facebook登录按钮。有时访问者已经登录Facebook但还没有登录我的网站(我的Facebook应用程序)。在这种情况下,登录按钮被显示但却没有作用。据我所知,登录按钮不仅应该登录Facebook,还应该登录我的应用程序。

当用户在点击之前从Facebook和应用程序(网站)中注销时,它可以正常工作。但是如果用户只登录了Facebook怎么办?那么我的按钮就没用了。


1
需要更多的信息,这里几乎没有足够的信息可以不做出巨大的假设。 - Ryan Ternier
注意:如果用户已经登录,将不会显示登录按钮。 如果faces="true",则该按钮仅呈现面部。 - ShawnDaGeek
2个回答

3
你可以渲染一个按钮用于连接会话,另一个按钮用于没有会话的用户。
示例用法:使用getLoginStatus()来确定用户是否连接到应用程序,并使用XFBML.parse来呈现按钮。 https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/ 我选择不使用channelURL,但您可以创建自己的并在此处阅读。 https://developers.facebook.com/docs/reference/javascript/
  1. 如果用户已连接并登录,则会显示注销按钮。
  2. 如果用户未连接但已登录Facebook,则会出现登录按钮。
  3. 如果没有会话或登录,则会出现登录按钮。

异步JavaScript SDK

<div id="fb-root"></div>
<!-- build1 is where we render our button based on connected status. -->
<div id="build1"></div>
<script>
      window.fbAsyncInit = function() {
        FB.init({
    appId  : 'YourAppId',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true, // parse XFBML
    //channelUrl : 'http://WWW.MYDOMAIN.COM/channel.html', // channel.html file
    oauth  : true // enable OAuth 2.0
        });
        if (window!=window.top) { 
        FB.Canvas.setAutoResize();
            }
            FB.getLoginStatus(function(response) {
            if (response.authResponse) {
            // logged in and connected user, someone you know
            // render button
            Cbuild1 = document.getElementById('build1');
            Cbuild1.innerHTML = "";
        Cbuild1.innerHTML = "<fb:login-button autologoutlink=\"true\"></fb:login-button>";
            FB.XFBML.parse(Cbuild1);
            } else {
            // no user session available, someone you dont know
            // render button
            Cbuild1 = document.getElementById('build1');
            Cbuild1.innerHTML = "";
        Cbuild1.innerHTML = "<fb:login-button></fb:login-button>";
            FB.XFBML.parse(Cbuild1);
            }
          });

      };
      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());
</script>

这里测试了登录状态的功能 https://shawnsspace.com/fb.test.connect.loginbutton.php


0

我有同样的问题。我尝试了Shawn E Carter的解决方案,但仍然没有改善。

但是我注意到在FB.init调用中有新的oauth参数。如果我将其设置为true,它就能按预期工作。


注意:如果用户已经登录,则不会显示登录按钮。如果faces="true",则只会呈现面孔。 - ShawnDaGeek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接