C# 如何将Xamarin.Forms与Xamarin.Auth一起使用来存储和检索帐户对象
在Xamarin.Forms项目中,我想使用Xamarin.Auth来安全地存储和检索帐户对象。请注意,我不打算与Facebook、Google或任何其他提供端到端oAuth登录体验的服务集成。Xamarin论坛正在讨论这个话题。你可能想看看这本书 Auth不是PCL和特定于平台的。您需要使用自定义渲染器。首先为您的登录创建一个表单页面:C# 如何将Xamarin.Forms与Xamarin.Auth一起使用来存储和检索帐户对象,c#,xamarin.ios,xamarin,xamarin.forms,xamarin.auth,C#,Xamarin.ios,Xamarin,Xamarin.forms,Xamarin.auth,在Xamarin.Forms项目中,我想使用Xamarin.Auth来安全地存储和检索帐户对象。请注意,我不打算与Facebook、Google或任何其他提供端到端oAuth登录体验的服务集成。Xamarin论坛正在讨论这个话题。你可能想看看这本书 Auth不是PCL和特定于平台的。您需要使用自定义渲染器。首先为您的登录创建一个表单页面: public class LoginPage : ContentPage { } 然后针对平台实施,例如iOS: [assembly: ExportRend
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);
}
}
}
有了它,您可以从表单中使用它:
this.MainPage = new LoginPage ();
如果您只需要安全存储对象,那么XLabs.Platform具有ISecureStorage接口,该接口是为iOS、Android和WP实现的。如果您使用的是表单,我建议您从NuGet安装XLabs.Forms包,然后使用Ioc(XLabs.Ioc)将实现注入到PCL代码中。您还可以使用XLabs.Serialization来使用Json.NET、ServiceStack或其他序列化程序(如ProtoBuffer)(作为XLabs.Serialization插件提供)对字节进行序列化/反序列化
2019年,您可以使用Xamarin.Essentials中的SecureStorage存储帐户信息。在幕后,它使用了平台标准:iOS上的Keychain,Android上的Keystore。因此,它还支持云备份,但也需要权限 同时,他们建议现在就使用Xamarin.Essentials提供的安全存储