2011-03-04 113 views
41

这是Facebook的登录按钮的信息如何让Facebook的登录按钮重定向到一个特定的URL

http://developers.facebook.com/docs/guides/web/

那么它将呈现一个登录按钮,用户可以点击它登录在Facebook(弹出登录窗口) 但是在用户登录后,尽管Like或Share按钮现在可以工作,但登录按钮仍然显示。

1)在用户成功登录后,是否有重定向到URL的方法?
2)另一种方法是在按钮动态改变日志以看不见的或更好的是, 其显示为“已登录在如[彼得(用户名)]”

如何能(1)和/或(2)做完了? (我没有看到一个回调URL在Facebook的应用程序设置,也可以重定向需要去不同的URL从网页A或B页面在网站上)

更新:我发现了一些信息关于<fb:login-button on-login="top.location = '...'; ">但我看到一些网站做的重定向,但没有on-login='...'

+5

我也为此感到困惑。另外,为什么无法使用fb:login-button的插件如果用户登录时不够智能,无法成为注销。混淆不在这里。我不能看到一个用户应该看到“登录”的用例。 – RichieHH 2011-05-19 13:03:03

回答

38

1)您也可以登录使用像这样的代码重定向(注意auth.login事件):

<script src="http://connect.facebook.net/en_US/all.js"> 
    </script> 
    <script> 
     FB.init({ 
      appId: '??????????????', cookie: true, 
      status: true, xfbml: true 
     }); 
     FB.Event.subscribe('auth.login', function() { 
      window.location = "http://example.com"; 
     }); 
    </script> 
    <fb:login-button> 
    Login with Facebook 
    </fb:login-button> 

2)确定是否显示或者隐藏登录按钮,可以使用FB.getLoginStatus要发现用户是否登录以下页面可能是有用的:http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

+0

我以为我只能使用PHP SDK来做到这一点,但我不得不整合JS SDK并使用它......并且它工作得很好。也是今天。订阅了'auth.login'事件的 – SebiF 2013-01-18 19:37:55

+0

,您还必须确定登录是否成功。在答案的代码中,无论登录是否成功,用户都将被登录到example.com。 – Raptor 2013-02-09 12:21:47

2

FBML选项:这应该给你你想要的功能(与xfbml:trueFB.init):

<fb:login-button autologoutlink="true" onlogin="OnRequestPermission();"> 
</fb:login-button> 

当用户登录时,它将更改为“注销”。另外,如果用户没有授予该应用程序的权限,则会弹出请求权限对话框。

自定义选项:如果你不喜欢使用FBML,你可以让你自己的Facebook登录按钮这样的:

HTML:

<button id="THE_BUTTON">Login</button> 

的Javascript:

FB.init({appId: 'YourAPPID', status: true, cookie: true, xfbml: true, oauth : true}); 
FB.getLoginStatus(function(response) { 
    if (response.status.toString().indexOf("connected")>-1) { 
     initAll(); //User is connected and granted permissions 
     FB.api("/me", function (response) { 
      document.getElementbyId("THE_BUTTON").value = 
              "Logged in as " + response.name; 
     }); 
    } else { 
     // This URL is specially formed to ask permissions for your app. You change the 
     // permissions and your appID 
     //redirect_uri = Change this to your desired callback URL 
     top.location=window.location="http://www.facebook.com/dialog/oauth/?scope=read_stream,publish_stream,friends_photos,friends_activities&client_id="yourAPPID(nobrackets)"&redirect_uri=http://apps.facebook.com/filtered_feed/&response_type=code"; 
    } 
}); 

因此,如果用户登录,该按钮将被替换为“以登录为用户名 “。否则,将显示OAuth对话框。

相关问题