2011-03-04 25 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對話框。

相關問題