如何使用Xamarin.Forms和Xamarin.Auth来存储和检索Account对象



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

如果你只想安全存储对象,那么XLabs。平台有ISecureStorage接口,该接口适用于iOS、Android和Android;WP。如果您使用Forms,我建议您从NuGet安装XLabs.Forms包,然后使用Ioc(XLabs.Ioc)将实现注入PCL代码。您还可以使用XLabs.Serialization使用Json.NET、ServiceStack或ProtoBuffer等其他序列化程序(可作为XLabs.Sserialization插件使用)对字节进行序列化/反序列化。

https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/src/Platform/XLabs.Platform/Services/ISecureStorage.cs

https://www.nuget.org/packages?q=XLabs

Xamarin论坛正在讨论这个主题。你可能想看看那里的线程。

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 ();

2019年,您可以使用Xamarin.Essentials的SecureStorage来存储帐户信息。在引擎盖下,它使用平台标准:iOS上的Keychain,Android上的Keystore。因此,它还支持备份到云,但也需要权限。

https://learn.microsoft.com/en-us/xamarin/essentials/secure-storage

此外,Xamarin.Auth中的AccountStore现在已被弃用,他们建议现在使用Xamarin.Essentials中的SecureStorage。

相关内容

  • 没有找到相关文章

最新更新