在Xamarin.Forms项目中,我想使用Xamarin.Auth来安全地存储和检索Account对象。请注意,我没有考虑与Facebook,Google或任何其他提供端到端oAuth登录体验的服务集成。
答案 0 :(得分:2)
如果您只是在安全存储对象之后,那么XLabs.Platform具有ISecureStorage接口,该接口适用于iOS,Android和iPad。 WP。如果您正在使用Forms,我建议从NuGet安装XLabs.Forms包,然后使用Ioc(XLabs.Ioc)将实现注入PCL代码。您还可以使用XLabs.Serialization来序列化/反序列化使用Json.NET,ServiceStack或其他序列化程序(如ProtoBuffer)(可用作XLabs.Serialization插件)的字节。
答案 1 :(得分:1)
Xamarin论坛正在讨论这个主题。您可能需要查看thread there。
Xamarin.Auth不是PCL和平台特定的。您需要使用自定义渲染器。首先为您的登录创建一个表单页面:
public class LoginPage : ContentPage
{
}
然后为平台实现它,例如iOS:
[assembly: ExportRenderer (typeof (LoginPage), typeof (LoginPageRenderer))]
namespace Demo.XForms.iOS
{
public class LoginPageRenderer : PageRenderer
{
public override void ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
var auth = new OAuth2Authenticator (
clientId: ...,
scope: "basic",
authorizeUrl: new Uri ("..."),
redirectUrl: new Uri ("..."));
auth.Completed += (sender, eventArgs) => {
DismissViewController (true, null);
if (eventArgs.IsAuthenticated) {
App.SaveToken(eventArgs.Account.Properties["access_token"]);
} else {
// The user cancelled
}
};
PresentViewController (auth.GetUI (), true, null);
}
}
}
有了这个,你可以在Forms中使用它:
this.MainPage = new LoginPage ();
答案 2 :(得分:1)
在2019年,您可以使用 Xamarin.Essentials 中的 SecureStorage 存储帐户信息。在后台,它使用平台标准:iOS上的Keychain,Android上的Keystore。因此,它还支持备份到云,但也需要权限。
https://docs.microsoft.com/en-us/xamarin/essentials/secure-storage
AccountStore in Xamarin.Auth is deprecated now还建议他们现在使用Xamarin.Essentials的SecureStorage。