2009-08-10 119 views
4

如何通过javascript确定用户是否通过 脸书连接登录到我的网站?基于这个结果,我想在网站上显示/不显示<fb:login-button> 按钮。如何动态显示/隐藏Facebook登录按钮

如果我做了这样的使用jquery:

<div id="login"></div> 

<script> 
if (notLoggedIn) 
{ 
    $("#login").html("<fb:login-button></fb>"); 
} 
</script> 

可以吗?

回答

8

我就是这么做的:

HTML:

<div id="logindisplay"> 
    <span id="login"> 
     <fb:login-button background="dark" onlogin="facebook_onlogin_ready();"> 
     </fb:login-button> 
    </span> 
</div> 

JS:

function updateUserBox() { 
    var user_box = document.getElementById("login"); 
    user_box.innerHTML = "<span><fb:name uid=loggedinuser useyou='false'></fb:name><fb:profile-pic uid=loggedinuser facebook-logo='true'></fb:profile-pic></span>"; 
    FB.XFBML.Host.parseDomTree(); 
     } 

FB_RequireFeatures(["Connect"], function() { 
      FB.init("appkey", "/Content/xd_receiver.htm", { "ifUserConnected": updateUserBox }); 
      FB.Connect.showPermissionDialog("publish_stream,status_update"); 
      FB.Connect.requireSession(); 
     }); 
+0

您是否注意到刷新页面时,显示原始登录按钮,然后切换到您的个人资料图片?你如何避免发生这种情况? – 2009-10-28 14:38:35

+0

@JackMarchetti这发生在我身上。你是如何解决的?谢谢! – 2017-08-17 19:54:11

+0

@SamuelAialaFerreira其实我不记得了。 FB API在过去的8年中发生了很大变化 - 包括摆脱FBML。 – 2017-08-18 03:12:19

1

我不认为你可以在Facebook中使用jQuery。他们有他们的own a wrapper js代码。也请检查this

+0

我使用在其上使用Facebook的 连接,而不是在Facebook上实际应用中我自己的网站/域名的jQuery。做 你认为jquery会为此工作吗? – 2009-08-10 13:52:42

+0

如果您将Facebook应用程序部署为iframe,则可以使用您喜欢的所有javascript – 2009-11-22 16:17:33

2

我不认为jQuery将阻止你将非标准HTML标记,但是您一定要将结束标记从</fb>更改为</fb:login-button>

除此之外,无论您何时在页面加载后将XFBML标记插入到DOM中,都需要请求FB API重新解析DOM。这应该做到这一点:

FB.ensureInit(function(){ 
    FB.XFBML.Host.parseDomTree(); 
}); 
+1

新的方法是:FB.XFBML.parse(); – 2013-07-08 11:50:04