我正在使用Parse後端的Xamarin.Forms應用程序。我正在嘗試將Facebook Android SDK整合到那。我想要做的是在每臺設備上本地獲取訪問令牌,並將該訪問令牌推送到Parse.com。爲此,我需要使用Xamarin官方Facebook sdk綁定。我使用依賴注入。所以我有IFacebookService
Xamarin Forms和Facebook Android SDK問題
public interface IFacebookService
{
Task<string> GetFacebookToken();
void LogOut();
}
而且每個平臺上我實現FacebookService並注入該實現。在iOS上我沒有問題。在Android上,問題是,即使顯示了Facebook UI,我也沒有在我的FacebookService實現中收到回調。我認爲這與Android管理回調以及Xamarin.Forms如何創建活動有關。讓我通讀代碼。下面是代碼的請求登錄從Facebook
var callbackManager = CallbackManagerFactory.Create();
//Here I instantiate my own implementation of IFacebookCallback
//nothing fancy here, I've just implemented the required methods with Console.WriteLine();
var loginCallback = new FacebookCallback(() => _loginInProgress = false);
//Register callbackManager and my instance of loginCallback
LoginManager.Instance.RegisterCallback (callbackManager, loginCallback);
//Here is the important part. I need an activity to show the login UI
//Xamarin forms provides me with this method.
var activity = Xamarin.Forms.Forms.Context as Activity;
//I request login
LoginManager.Instance.LogInWithReadPermissions(activity, new string[] { "public_profile", "email", "user_friends" });
所以部分,我相信這個問題是此行
var activity = Xamarin.Forms.Forms.Context as Activity;
在調試器中我看到,返回MainActivity
,這是我的入口點內(MainLauncher = true
),並在我打電話Xamarin窗體的初始化方法
//Setup Xamarin forms
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new FormsApp());
是在FormsApp註冊的初始頁面調用LoginPage。所以我相信它在主要活動中被加載爲片段。所以,也許我需要做這樣的事情
LoginManager.Instance.LogInWithReadPermissions(LOGIN_PAGE_FRAGMENT,......);
因爲在Facebook SDK中有活動和片段的單獨版本。我不知道如何得到LOGIN_PAGE_FRAGMENT
,甚至可能是其他地方的問題,我不明白。 你有什麼想法可以導致這個問題?