如何从Xamarin Auth-Google获得访问令牌

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Xamarin Auth-Google获得访问令牌相关的知识,希望对你有一定的参考价值。

我正在尝试从android应用程序中的0auth2获取身份验证令牌。问题是我签名后,由于重定向URL,应用程序正在重新启动,但是一旦重新启动应用程序,我就无法从意图中获取任何身份验证令牌。

code

var authenticator = new OAuth2Authenticator(ClientID, ClientSecret, Scope, new Uri("https://accounts.google.com/o/oauth2/auth"),
                new Uri("com.app.abcd:/oauthredirect"), new Uri("https://oauth2.googleapis.com/token"), null, true);
 authenticator.Completed += OnAuthCompleted;
                authenticator.Error += OnAuthError;
                var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
                presenter.Login(authenticator);

 private async void OnAuthCompleted(object sender, AuthenticatorCompletedEventArgs e)
        {
            var authenticator = sender as OAuth2Authenticator;
            if (authenticator != null)
            {
                authenticator.Completed -= OnAuthCompleted;
                authenticator.Error -= OnAuthError;
            }

            IsAuthorized = e.IsAuthenticated;
            //User user = null;
            if (e.IsAuthenticated)
            {}
}

Android

[Activity(Label = "ABCD", MainLauncher = true, LaunchMode = LaunchMode.SingleTask, ConfigurationChanges = ConfigChanges.ScreenSize, ScreenOrientation = ScreenOrientation.Portrait)]
    [IntentFilter(new[] { Intent.ActionView },
              Categories = new[] { Intent.CategoryBrowsable, Intent.CategoryDefault },
        //DataScheme = "abcd",
         DataSchemes = new[] { "com.app.abcd" },
               DataPath = "/oauthredirect",
              AutoVerify = true)]

    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {

protected override void OnCreate(Bundle bundle)
        {
            base.SetTheme(Resource.Style.MainTheme);
                base.OnCreate(bundle);
                DependencyService.Register<ChromeCustomTabsBrowser>();
                CrossCurrentActivity.Current.Activity = this;

                TabLayoutResource = Resource.Layout.Tabbar;
                ToolbarResource = Resource.Layout.Toolbar;

                global::Xamarin.Forms.Forms.Init(this, bundle);
                LoadApplication(new App());
        }
protected override void OnNewIntent(Intent intent)
        {
            base.OnNewIntent(intent);
            //HandleNotificationIntent(intent);
        }

        protected override void OnRestart()
        {
            var intent = this.Intent;
            base.OnRestart();
        }
}

[当我运行此代码并调用presenter.Login(authenticator);时,我可以看到google对用户进行身份验证,并且调用了OnNewIntent,应用重新启动,并且从未调用OnAuthCompleted,并且我无法获取访问令牌。] >

这是从0auth2获取访问令牌的正确方法,还是我缺少什么?谁能帮我这个忙。

我正在尝试从Android应用程序中的0auth2获取身份验证令牌。问题是我签名后,由于重定向网址,应用程序正在重新启动,但是一旦...

答案

我找到了解决方案。查看示例here

以上是关于如何从Xamarin Auth-Google获得访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xamarin 表单中获得更多输入?

如何使用 Xamarin 调用 Web 服务?

如何在 C# 中使用 xamarin 在 android 上获取 PSK? [关闭]

如何获得在着色器中用作Vulkan API中的变量的GPU输入?

如何使用 Xamarin 基于 Wifi 获取 GPS

Xamarin 表单 HttpClient 卡住