Xamarin Android: почему не работает аутентификация в Azure Active Directive - PullRequest
0 голосов
/ 19 сентября 2019

Привет всем, меня зовут Танигучи

Я пытаюсь пройти аутентификацию в Azure Active Directory, но код sintaxe показывает ошибку.

Интерфейс аутентификации:

public interface IAuthenticator
{
    Task<AuthenticationResult> Authenticate(string authority, string resource, string clientId, string returnUri);
}

класс аутентификатора:

[assembly: Xamarin.Android.Dependency(typeof(App11.Authenticator))]
public class Authenticator : IAuthenticator
{
    public async Task<AuthenticationResult> Authenticate(string authority, string resource, string clientId, string returnUri)
    {
        var authContext = new AuthenticationContext(authority);
        if (authContext.TokenCache.ReadItems().Count() > 0)
            authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
        var uri = new Uri(returnUri);

        var platformParams = new PlatformParameters((Activity)Android.Context);
        var authResult = await authContext.AcquireTokenAsync(resource, clientId, uri, platformParams);
        return authResult;
    }
}

где я вызываю аутентификацию:

public class MainActivity : AppCompatActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.activity_main);
        Authenticate();
    }

    public async void Authenticate()
    {
        string Nome_Usuario = "taniguchi.sales@ax4b.com";
        string clientId = "2b121ed5-9fe6-4ddf-bdea-9bbe8cd37bd0";
        string authority = "https://login.microsoftonline.com/ax4b.com";
        string returnUri = "https://ax4bdev.crm2.dynamics.com";
        string graphResourceUri = "https://ax4bdev.crm2.dynamics.com";
        var auth = Xamarin.Android.DependencyService.Get<IAuthenticator>();
        var data = await auth.Authenticate(authority, graphResourceUri, clientId, returnUri);
    }

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);
        AuthenticationAgentContinuationHelper.SetAuthenticationAgentContinuationEventArgs(requestCode, resultCode, data);
    }

Строка:

[assembly: Xamarin.Android.Dependency(typeof(App11.Authenticator))]

показывает ошибку: Ошибка CS0234 Тип илиимя пространства имен 'DependencyAttribute' не существует в пространстве имен 'Xamarin.Android' (вам не хватает ссылки на сборку?)

1 Ответ

0 голосов
/ 19 сентября 2019

[сборка: Xamarin.Android.Dependency (typeof (App11.Authenticator))] *

DependencyService обычно используется в Xamarin.Forms , но теперь вы Xamarin.Android project.y вам не нужен IAuthenticator и Authenticator класс, вы можете написать метод в вашей деятельности прямо как (яя не уверен, что ваш метод аутентификации работает , только для ошибки зависимости):

private  async void Authenticate()
    {
        string Nome_Usuario = "taniguchi.sales@ax4b.com";
        string clientId = "2b121ed5-9fe6-4ddf-bdea-9bbe8cd37bd0";
        string authority = "https://login.microsoftonline.com/ax4b.com";
        string returnUri = "https://ax4bdev.crm2.dynamics.com";
        string graphResourceUri = "https://ax4bdev.crm2.dynamics.com";
        var data = await Authenticate(authority, graphResourceUri, clientId, returnUri);

    }

    private async Task<AuthenticationResult> Authenticate(string authority, string resource, string clientId, string returnUri)
    {
        var authContext = new AuthenticationContext(authority);
        if (authContext.TokenCache.ReadItems().Count() > 0)
            authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
        var uri = new Uri(returnUri);

        var platformParams = new PlatformParameters(this);
        var authResult = await authContext.AcquireTokenAsync(resource, clientId, uri, platformParams);
        return authResult;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...