2011-02-16 95 views
3

原來我使用Facebook上的.NET SDK在這裏找到:從舊的(V3.0)Facebook的淨SDK遷移到最新版本(V5.0)

http://facebooktoolkit.codeplex.com/

,但現在,我試圖遷移到其下面主辦,最新版本實現了許多與最近的新的Facebook功能:

http://facebooksdk.codeplex.com/

即使我已經建立了幾個Facebook的帆布應用程序,甚至集成了我們公司網站使用fa cebook連接,我仍然對關於Facebook認證/授權更改的細節和細節感到困惑。例如,我將如何將我從舊的(v3.0)與Facebook的.NET SDK集成中使用的以下.NET服務器代碼移植到新的v5.0 .NET SDK中?

  string perm = "publish_stream"; //or any permission you want to check 
      FBConnectAuthentication auth = new FBConnectAuthentication(Settings.FBConnectAPIKey, Settings.FBConnectAPISecret); 
      FBConnectSession fbSession = auth.GetSession(); 
      string userId = fbSession.UserID; 
      var session = new Facebook.Session.ConnectSession(Settings.FBConnectAPIKey, Settings.FBConnectAPISecret); 
      var api = new Facebook.Rest.Api(session); 
      var usr = SessionInfo.CurrentUserOrUserAccountWithLastEmailAddressEntered; 
      Facebook.Schema.Enums.ExtendedPermissions perm 
       = (Facebook.Schema.Enums.ExtendedPermissions)Enum.Parse(typeof(Facebook.Schema.Enums.ExtendedPermissions), permission); 
      hasPermission = api.Users.HasAppPermission(perm); 

,因爲上面的代碼正在從使用的REST API我們的服務器執行,移植到新的SDK時,我應該不用擔心的使用Oauth的access_token?

在客戶端

,當最終用戶查看我的網站一樣,頁面看起來做工精細當我做下面的JavaScript調用:

FB.Connect.showPermissionDialog('publish_stream, email, user_checkins', publishToWallPermissionGranted); 
function publishToWallPermissionGranted() { 
    FB.Connect.streamPublish('some share message', null, null, null, false, null); 
} 

使用上面的客戶端代碼,我不是存儲一個access_token或做類似的事情,但我怎麼能夠成功驗證,授權和發佈到用戶的流?

我真的很感激任何人也可以給我一個更詳細的解釋,當我應該使用Oauth來獲取訪問令牌(即,如果用戶正在使用我的畫布應用程序),或者當我應該簡單地使用我的appId來初始化javascript FB對象(即FB.init())在進行客戶端API調用時或者我應該獲取應用程序訪問令牌時。

謝謝!

回答

0

經過一些調查和反覆試驗,這裏是我用過的集成了最新的.NET SDK的Facebook

var httpContext = new System.Web.HttpContextWrapper(System.Web.HttpContext.Current); 
var auth = new Facebook.Web.Authorizer(Settings.FBAppId, Settings.FBConnectAPISecret, (System.Web.HttpContextBase) httpContext); 
Facebook.FacebookClient fbApp = null; 
if (auth.Session != null && auth.Session.AccessToken != null) 
{ 
    fbApp = new Facebook.FacebookClient(auth.Session.AccessToken); 
} 
isLoggedIntoFacebook = auth.IsAuthorized(); 
var me = fbApp.Get("me"); 

的伎倆是,我不得不使用授權者類真正找出如果用戶登錄到Facebook和連接到我的外部網站。我不知道授權人是如何工作的,但我的猜測是,它會查看cookie以查明用戶是否登錄Facebook(因爲httpContext已傳入授權人)。然後,假設用戶登錄Facebook並授權我的應用程序,我的服務器端代碼可以從Authorizer對象獲取AccessToken以創建一個新的FacebookClient,它可以輕鬆地調用圖api。

在我的情況下,我使用FB JS SDK彈出對話框,將用戶登錄到Facebook,然後我的服務器端代碼只是檢查以確保用戶登錄,然後調用graphy apis來獲取信息我在服務器上使用。

我希望這可以幫助別人。

0

不幸的是,由於Facebook修改了他們的API/SDK產品,舊的.NET SDK(微軟吹捧)被拋棄了。

我想象你上了年紀的Facebook的JavaScript SDK(http://developers.facebook.com/docs/reference/oldjavascript/)

展望未來,你很可能希望訪問Facebook圖形API。

這將需要更新您的客戶端JavaScript SDK和您的服務器端(Facebook C#).NET SDK。

如果您的應用程序只是簡單地發佈到新聞傳播,那麼您可以通過使用JavaScript調用,而無需服務器端.NET SDK相處。但是,如果你想創建一個Canvas應用程序,將用戶登錄到你的網站等,你還需要升級到Facebook C#SDK。)

+0

大多數情況下,我可以使用我們網站上的Javascript SDK(調用FB.ui()來顯示權限對話框等),但是我們網站上有一些功能依賴於使REST API調用Facebook以檢索信息。現在,我的任務是集成新的.net Facebook SDK,我很困惑如何使用.net sdk獲得有效的會話並獲取有關用戶的信息(即,用戶授權我的Facebook啓用了哪些權限網站)。 – Deven

相關問題