C# 如何将Xamarin.Forms与Xamarin.Auth一起使用来存储和检索帐户对象

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

在Xamarin.Forms项目中,我想使用Xamarin.Auth来安全地存储和检索帐户对象。请注意,我不打算与Facebook、Google或任何其他提供端到端oAuth登录体验的服务集成。

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);
        }
    }
}
有了它,您可以从表单中使用它:

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提供的安全存储