2011-06-28 45 views
0

对于几天我试图使用自定义按钮来调用登录自定义登录按钮VS. FBML按钮

$(".join").live("click", login); 

    function login(){ 
     FB.login(function(response) { 
      if (response) { 
       console.log('Login success.'); 
       FB.api("/me", handleMe); 
      } 
      else {console.log('Login cancelled.')} 
     }); 
    } 


    function handleMe(response) { 

     $.ajax({ 
      async: 'false', 
      type: 'GET', 
      url: 'www. address.com', 
      data: 
       "uid=" + response.id + 
       "&name=" + response.name, 

      success: function(){ 
       console.log('Ajax successful.'); 
       console.log("<?php echo $this->session->userdata('fb_uid'); ?>"); 
       window.location = "www. address.com"; 
       }, 
      error: function(){console.log('Ajax failed.');} 
     }); 
    } 

    $(".join,.log,.biggie-btn").live("click", login); 

但是它总是马车,登录窗口不会关闭(奇怪的是,大部分的时间)后,我关闭它,我不会得到用户FB.API的细节,我不得不刷新页面来获取它们。

只要我切换到的错误都不见了(恰好具有相同的功能),但我现在无法控制的登录按钮的样式。 有没有解决方案,有一个全功能的自定义登录按钮?

回答

0

您可以使用Facebook的JavaScript SDK,方便地构建自己的登录按钮。只需拥有按钮类FB.login并向其传递回调函数和可选的任何扩展权限即可。一旦成功,这将设置一个cookie,其中包含一个access_token,如果需要,您可以从服务器代码中使用该cookie。否则,你可以直接调用javascript sdk函数。

下面是一个例子:

<!DOCTYPE html> 
<html> 
<body> 
<div id="fb-root"></div> 
<a href="#" onclick="doLogin();return false;">Custom Login Button</a> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
    FB.init({ appId: 'your app id', status: true, cookie: true, xfbml : true }); 

    function doLogin() { 
    FB.login(function(response) { 
     if (response.session && response.perms) { 
     FB.api('/me', 
      function(response) { 
      alert('User: ' + response.name); 
      alert('Full details: ' + JSON.stringify(response)); 
      } 
     ); 
     } 
    } , {perms:'user_about_me'}); 
} 
</script> 
</body> 
</html> 
+0

嘿对于那些要做到这一点在这里新的框架是一个有用的Facebook开发者博客https://developers.facebook.com/blog/post/2011/07/21 /更新完毕JavaScript的SDK和 - OAuth的2-0-路线/ –