2015-02-10 22 views
2

我一直在使用Facebook.Client SDK的0.8.5-alpha版本,並希望移動高達最新的0.9.91-α自API表示它支持通過應用程序登錄的功能,但是可以使用瀏覽器登錄。Facebook.Client 0.9.91-α是一種倒退,以登錄到FB

Session.ActiveSession.LoginWithBehavior("email,public_profile,user_friends", FacebookLoginBehavior.LoginBehaviorAppwithMobileInternetFallback); 

但是,這不起作用,實際上根本沒有實施。

爲了使事情變得更糟的0.9.91-alpha版本已經改變登錄工程LoginBehaviorWebViewOnly方法的方式。

在0.8.5-α有一個簡單的異步API

Task<FacebookSession> LoginAsync(string permissions) 

這將打開一個瀏覽器彈出應用程序並返回到您之前管理broswer的身份驗證。

在0.9.91-α這個API已經用新的API

void LoginWithBehavior(string permissions, FacebookLoginBehavior behavior) 

此API不使用的異步和迫使我們使用回調處理程序來代替

Session.OnFacebookAuthenticationFinished += OnFacebookAuthenticationFinished; 

(而且不,你不能讓它異步與TaskCompletionSource - 見下段)

這仍然像以前一樣打開網頁視圖當登錄完成有一個URI協議NAVIGAT除離子事件(從FB登錄頁面)嘗試啓動已註冊的協議

fb446785792148002://authorize/#state={"0is_active_session":1 

這不是由Facebook.Client處理的任何應用程序,所以導致你關閉應用並重新打開。

這是一個非常糟糕的實現,因爲您的應用程序已經打開。應該消費重定向,而不會導致您的應用關閉並重新打開。

實際上這很難使用,因爲它迫使應用程序啓動兩次。如果應用程序實現諸如擴展啓動畫面之類的操作,則此方法無效

的Facebook.Client應更新其

void DialogWebBrowserOnNavigating(object sender, NavigatingEventArgs navigatingEventArgs) 

處理登錄流程結束,並返回到應用程序,而不必強制關閉/重新打開

回答

1

FacebookLoginBehavior.LoginBehaviorAppwithMobileInternetFallback確實沒有實現並將被取出。無法檢測WP8.0上的應用程序的存在。這在WP8.1中可能是可行的,我們可以在那裏嘗試並實現它。

的登錄異步/的await機制已被取出,因爲登錄的API進行了分段。 LoginWithApp的一個API - 由於登錄完成的過程不能進行異步/等待,另一個用於LoginAsync(它完成了基於Webview的登錄)。我們不得不另外安裝兩種登錄方式--Windows上的WebAuthBroker - 可以等待和基於瀏覽器的登錄 - 這不可能。每種方法都有自己的特性,並且每種方法都有不同的登錄機制,可能會產生更多的碎片。因此,需要有單個回調處理程序。這也是它在iOS/Android上完成的方式。因此,C#版本與Facebook認爲是標準做法一致。

關於現在調用fb重定向的基於Webview的登錄,原因是您的基於Webview的登錄現在獲取可以默默擴展的SSO令牌。如果我們用您建議的版本替換它,那隻會授予您60天的無法擴展的令牌。鑑於此,我們決定採用fb重定向。

關於被調用兩次的UriMapper。這似乎是一個平臺問題。我們沒有具體的事情。這個問題記錄在here沒有解決。

+0

好的,謝謝你的迴應。很高興聽到改變新的SDK版本的理由。 – user3745329 2015-02-16 16:24:21