2015-10-19 2 views
1

КонтекстПолучить аутентификацией информацию о пользователях в Azure Api App

У меня есть Azure Api App установлен как "Public (проверка подлинности)" и позволили Facebook идентичность. Приложение My Api защищено, и я могу пройти аутентификацию с помощью FB. В приложении Api я хочу получить аутентифицированную информацию пользователя, такую ​​как логин, токен и адрес электронной почты для сохранения в базе данных.

Проблема

Я не могу найти какую-либо документацию о том, как получить эту информацию. Я последовал за this статьи и попытался

var runtime = Runtime.FromAppSettings(Request); 
    var user = runtime.CurrentUser; 
    TokenResult token = user.GetRawTokenAsync("facebook").Result; 
    var name = (string)token.Claims["name"]; 
    var email = (string)token.Claims["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"]; 

Я сделал изменения в файл apiapp.json разрешить аутентификацию facebook "authentication": [{"type": "facebook"}] но раз на GetRawTokenAsync при удаленной отладке Api App.

Глядя на другие блоги/статьи/посты, следуя еще один способ, с помощью ссылок на дополнительные узлы «Microsoft.WindowsAzure.Mobile»

var user = (MobileAppUser)this.User; 
    var facebookCredentials = user.GetIdentityAsync<FacebookCredentials>().Result; 

Но это также не работает, как this.user имеет тип WindowsPrincipal пользователя, когда удаленная отладка моего приложения Api. И, по-видимому, «Microsoft.Azure.AppService.ApiApps.Service» является единственной ссылкой, которую нужно Azure Api App.

Я что-то упустил? Это похоже на базовый сценарий, чтобы получить аутентифицированного пользователя в веб-службе Api App.

+0

Вы прошли мимо этого? Исходный код выглядит правильно. Вам не нужно ничего в apiapp.json. Не могли бы вы поделиться сигнатурой метода, который содержит код? Является ли это асинхронным или синхронизирующим? –

+0

У этой проблемы все еще нет. Что ты имеешь в виду, мне не нужно ничего в apiapp.json? Даже свойство аутентификации? Вот подпись метода 'public IEnumerable Get()' –

ответ

1

И, наконец, получил его на работу. При вызове метода GetRawTokenAsync мы должны await. Использование Result или Wait от объекта Task не работает и не работает. Это все еще неясно, почему, возможно, фреймворк?

Смежные вопросы