2015-02-07 5 views
1

Я создаю приложение Windows Phone 8.1 (Windows Runtime), которое должно пройти аутентификацию с конечной точкой Azure Active Directory OAuth. Я использую ADAL для пакета WP81 nuget в качестве диспетчера проверки подлинности, чтобы вернуть токен OAuth.ADAL для Windows Phone 8.1 Проблемы

Проблема, с которой я борюсь, - это то, где мне нужно вызвать различные методы входа ADAL в жизненный цикл страницы телефона. Прямо сейчас я звоню AuthenticationContext.AquireTokenAndContine() в мероприятии Page.Loaded. Я также внедрил события ContinuationManager, IWebAuthenticationContinuable и App.Activated, как описано в примере кода github. Я также использую Windows.Security.Authentication.Web.WebAuthenticationBroker.GetCurrentApplicationCallbackUri() для получения моего URI клиента.

Независимо от того, что я делаю, я продолжаю получать следующее сообщение об ошибке. Любое понимание того, что я могу сделать? Спасибо заранее за вашу помощь.

«Microsoft.IdentityModel.Clients.ActiveDirectory.AdalException» произошло в mscorlib.ni.dll, но не был обработан в пользовательском коде

Дополнительная информация: authentication_ui_failed: диалог аутентификация на основе браузера не удалось завершить

async void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 

     await LoadFromViewModel(); 
} 

public async Task LoadFromViewModel() 
{ 
// Try to get a token without triggering any user prompt. 
// ADAL will check whether the requested token is in the cache or can be obtained without user itneraction (e.g. via a refresh token). 
    AuthenticationResult result = await authContext.AcquireTokenSilentAsync(this.viewModel.RESTApiResourceUri, this.viewModel.AzureADClientId); 
    if (result != null && result.Status == AuthenticationStatus.Success) 
    { 
     // A token was successfully retrieved. Get the To Do list for the current user 
     await viewModel.BindData(); 
    } 
    else 
    { 
     // Acquiring a token without user interaction was not possible. 
     // Trigger an authentication experience and specify that once a token has been obtained the GetTodoList method should be called 

    authContext.AcquireTokenAndContinue(this.viewModel.RESTApiResourceUri, this.viewModel.AzureADClientId, this.viewModel.AzureADRedirectUri, AuthenticationSuceeded); 
     } 
    } 
+0

Вы получаете ту же ошибку при запуске образца? Это может быть хорошим моментом для начала. Если там нет ошибки, вы должны проверить, что вы делаете по-другому в своем приложении. – Afshin

ответ

1

ADAL использует WebAUthenticationBroker (WAB) для отображения его на экране. WAB в Windows Phone 8.1 не будет отображаться до тех пор, пока не будет загружен весь UX приложения, поэтому ваше текущее местоположение метода не будет работать - по крайней мере, до тех пор, пока поведение WAB не изменится. Для аналогичной темы см. Authentication failed with Azure Active Directory in Windows Phone.