2011-04-19 118 views
0

我在尋找使用facebook SDK的方法,我首先想知道我應該使用哪個版本?關於facebook SDK的問題

它看起來像一些重大的變化發生了從4.2到5(目前仍處於測試階段)。我應該繼續使用測試版嗎?任何人在任何時候都會遇到任何問題?

我的第二個問題是如何使用它進行身份驗證。

現在我使用DotNetOpenAuth做我的OpenID身份驗證爲我的網站。我正在使用那種Facebook身份驗證插件(oAuth),但是我打算在我的網站上使用更多的Facebook功能,所以我認爲使用這個插件然後SDK庫是有點沒用,當圖書館似乎能夠做到這一切。

Anways我怎麼辦認證的SDK庫。我想在我的登錄頁面上有一個按鈕,他們點擊它將關閉到Facebook,他們成爲身份驗證,我收到一些請求,說他們在哪裏進行身份驗證,然後我給他們一個cookie,讓他們進來。

所有教程我看到,你只是使用Facebook作爲唯一的身份驗證方法,但當然對我來說我有openId,Facebook和Twitter。

http://facebooksdk.codeplex.com/wikipage?title=Getting%20Started%20with%20an%20ASP.NET%20MVC%203%20Website&referringTitle=Getting%20Started

+0

太寬泛。如果不問是否使用beta和eta來發布5版,可能會更好。 – jfar 2011-04-20 03:26:56

回答

0

關於4.2和5.0 BETA我猜你需要決定是否要使用一個BETA版本或穩定版本。我確定他們的BETA版本中有更新日誌,您可以查看自舊版本以來的更改。

關於使用Facebook的認證。我有一個項目,我支持標準的表單身份驗證和帳戶創建以及Facebook登錄。在我的AccountController中,我有一個用於Forms登錄的操作,一個用於Facebook登錄。

配置Facebook的組件,你可以按照你已經發布的教程,那麼你可以把你的網頁以及類似的代碼在Facebook的按鈕,開始驗證過程:

<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     FB.init({ appId: '<%= FacebookSettings.Current.AppId %>', status: true, cookie: true, xfbml: true }); 

     $('#fbLoginButton').click(function() { 
      FB.login(function (response) { 
       if (response.session) { 
        // Success - execute our facebook login action. 
        window.location = "<%= Url.Action("FacebookLogin", "Account") %>"; 
       } else { 
        // user cancelled login or failed 
       } 
      }, { perms: 'email' }); 

      return false; 
     }); 
    }); 

Facebook的aciton的工作原理是:

  1. 當時Facebook驗證成功了嗎?
  2. 我們是否有用戶在系統中使用Facebook ID作爲用戶名?
  3. 如果沒有創建一個用戶,從Facebook的數據填充姓名,電子郵件等
  4. 設置窗體身份驗證cookie

僞代碼:

FacebookApp facebook = new FacebookApp(); 
if (facebook.IsAuthenticated) { 
     string userName = facebook.UserId.ToString(); 

     if (UsersRepository.ByUserName(userName) == null) { 
      // Create a User using the Facebook name, email, etc data 
     }    
     FormsAuthentication.SetAuthCookie (userName , true); 
} 

這樣的想法是,我委託對這些第三方服務進行身份驗證,然後使用我可以從他們獲取的信息在我的系統上創建一個用戶。同樣在我的項目中,因爲我希望用戶在帳戶創建後設置/非常喜歡一些首選項,我將它們重定向到他們可以執行此操作的頁面。

P.S:關於在Visual Studio在本地運行Web項目小費。您可以創建一個私人Facebook應用,並將「網站網址」設置爲例如「http:// localhost:4911 /」並使用該appId。這將允許你在本地玩Facebook。

2

我使用Facebook SDK,我建議你將使用測試版

的原因是因爲Facebook正在發生變化,貶值很多老REST接口,使圖形API只有這樣,才能訪問數據。所以,爲了未來的證明,最新的和最偉大的是要走的路。

現在,它是一個測試版,所以一切都不是100%。如果您需要需要穩定性,並且不介意進行更改,請使用穩定版本,然後再升級。

至於認證,the process to authenticate is pretty simple

您需要authURL:

string authURL = @"https://graph.facebook.com/oauth/authorize?client_id=" + Settings.appId + "&redirect_uri=" + redirectUrl + permissions 

其中appId是你的Facebook應用程序ID(當您註冊與Facebook上的應用程序,你得到它),在redirectUrl是您要的Facebook向您發送挑戰網址令牌,並且您的permissions是您希望通過您的Facebook身份驗證訪問的東西的列表令牌

您製作一個彈出窗口或任何瀏覽到該URL的內容。用戶將登錄Facebook(如果他們還沒有),然後他們將與應用程序授權屏幕一起呈現(如果他們還沒有授權該應用程序)。一旦他們授權(或者如果他們已經授權,則可以進行亞馬遜),頁面將被轉發到您提供的redirectUrl。在URL中,將會有一個名爲code的GET變量,它將包含質詢字符串。你把這個挑戰代碼,並將其作爲查詢變量添加到另一個URL是在形式:

https://graph.facebook.com/oauth/access_token?client_id=YOURID&redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret=YOURSECRET&code=THATCODE 

該URL將返回認證密鑰...

唷!這是一個相當的過程....如果手動完成:)現在你已經瞭解了一些關於發生了什麼的事情,你可以欣賞SDK爲你做什麼。

要使用SDK進行身份驗證,Just follow the 19 simple steps as outlined in this link

容易吧?