Ошибка аутентификации Xamarin и identityserver4 - PullRequest
1 голос
/ 25 апреля 2019

Мой проект разработан с использованием VS2017 и Xamarin. Я хочу аутентифицировать мобильное приложение Xamarin для Android с помощью IdentityServer4.

Информация о моем клиенте IdentityServer4 выглядит следующим образом:

    {
        "Enabled": "true",
        "ClientId": "xamarin.android",
        "ClientName": "Application",
        "UserClaims": ["role"],
        "RequirePkce": "true",
        "AllowOfflineAccess": "true",
        "RequireClientSecret": "false",
        "AllowAccessTokensViaBrowser": "true",
        "AlwaysIncludeUserClaimsInIdToken": "true",
        "AllowedGrantTypes": [
          "authorization_code"
        ],
        "RedirectUris": [
          "http://localhost/oauth/grants"
        ],
        "AllowedScopes": [
          "openid",
          "profile",
          "offline_access",
          "my.api"
        ]
    }

И мой класс приложения xamarin похож на следующий.

    [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
    namespace MainUI
    {
        public partial class App
        {
            public App() : this(null) { }

            public App(IPlatformInitializer initializer) : base(initializer) { }

            protected override async void OnInitialized()
            {
                InitializeComponent();

                await NavigationService.NavigateAsync("NavigationPage/MainPage");
            }


            public static Account AuthAccount { get; set; }
            public static HttpClient Client = new HttpClient();

            protected override void RegisterTypes(IContainerRegistry containerRegistry)
            {
                containerRegistry.RegisterForNavigation<NavigationPage>();
                containerRegistry.RegisterForNavigation<MainPage, MainPageViewModel>();
            }

            protected override void OnStart()
            {
                var oAuth = new OAuth2Authenticator(
                    "xamarin.android",
                    "offline_access my.api",
                    new Uri("http://localhost/oauth/connect/authorize"), 
                    new Uri("http://localhost/oauth/grants"))
                {
                    AccessTokenUrl = new Uri("http://localhost/oauth/connect/token"),
                    ShouldEncounterOnPageLoading = false
                };

                var presenter = new OAuthLoginPresenter();
                presenter.Login(oAuth);

            }   
        }
    }

Но когда я запускаю код, выдается исключение, которое не содержит подробностей.

enter image description here

Ошибка Stacktrace выглядит так:

в Xamarin.Auth.Presenters.OAuthLoginPresenter.Login (Xamarin.Auth.Authenticator authenticator) [0x00012] в <98de59c6304c4348ab7c355151c2702f>: 0 в MainUI.App.OnStart () [0x0004f] в C: \ Development \ Proj \ MainUI \ MainUI \ App.xaml.cs: 64

Вы когда-нибудь получали ошибку, подобную этой?

...