我正在尝试使用 Xamarin native iOS 库向 Facebook 进行身份验证并访问 Graph API。
根据该组件的 4.0.1.1 版本说明(我在任何地方都没有找到任何其他文档)
FBSDKTokenCachingStrategy. No alternative. LoginManager class caches tokens to keychain automatically. You can observe token changes to do manual post processing.
然而,这似乎并没有发生。当我的 iOS 应用程序启动时,我创建 LoginManager 实例并调用 Init。但是在那之后 AccessToken.CurrentAccessToken 仍然为空。只有在我在 LoginManager 上调用 LogInWithReadPermissionsAsync 后,它才会填充数据。
我错过了什么还是一个错误。
这是我的代码。
public bool IsLoggedIn
{
get
{
return AccessToken.CurrentAccessToken != null &&
AccessToken.CurrentAccessToken.ExpirationDate.ToDateTime() > DateTime.Now;
}
}
public Task<AccessToken> FacebookLoginInternal()
{
lock (monitor)
{
if (_loginTask == null)
{
LoginManager manager = new LoginManager();
manager.Init();
if (IsLoggedIn)
{
var ts = new TaskCompletionSource<AccessToken>();
ts.SetResult(AccessToken.CurrentAccessToken);
_loginTask = ts.Task;
}
else
{
var loginResult = manager.LogInWithReadPermissionsAsync(
new string[] { "email", "user_friends" });
_loginTask = loginResult.ContinueWith(r =>
{
return r.Result.Token;
});
}
}
return _loginTask;
}
最佳答案
根据 Xamarin 支持的回复(谢谢!)
下面的代码解决了这个问题:
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
return ApplicationDelegate.SharedInstance.FinishedLaunching(app, options);
}
关于ios - Xamarin iOS SDK 中的 LoginManager 不缓存 AccessTokens,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30348601/