LoginWithMicrosoftAccountAsync всегда завершается с ошибкой 401.

Я создал универсальное приложение и лазурные мобильные сервисы. Я следовал руководству по добавлению аутентификации учетной записи Microsoft, как это представлено на веб-сайте Azure. Для этой цели я использую новейший Live SDK.

На стороне клиента я использую этот код, который более или менее не соответствует учебнику:

const string ReferralUrl = "https://my-url-here.azure-mobile.net/";

static MobileServiceClient MobileService = new MobileServiceClient(
          "https://my-url-here.azure-mobile.net/",
          "my key");

MobileServiceUser _user;

private LiveConnectSession _session;
private async Task Authenticate()
{
    var authClient = new LiveAuthClient(ReferralUrl);
    while (_session == null)
    {
        var result = await authClient.LoginAsync(new[] { "wl.basic" });
        if (result.Status == LiveConnectSessionStatus.Connected)
        {
            _session = result.Session;
            var client = new LiveConnectClient(result.Session);
            var meResult = await client.GetAsync("me");
            return;
        }
        else
        {
            break;
        }
        }

    _session = null;
}

public async Task<bool> Login()
{
    try
    {
        await Authenticate();
        _user = await MobileService
                .LoginWithMicrosoftAccountAsync(_session.AuthenticationToken);
        }
    catch (Exception ex)
    {
        //Debug.WriteLine(ex.Message);
            //return false;
    }

    return true;
}

Для этого приложения были проверены следующие факты:

  • Запись в магазине создана
  • Запись в магазине была связана с универсальным приложением (это было выполнено для проектов win8.1 и wp8.1)
  • The store app has the following settings:

На портале Azure на вкладке «Идентификация» были введены и сохранены идентификатор и секрет клиента. Однако package-SID отсутствует (это тоже не упоминается в туториале).

Я скачал проект службы, созданный с помощью мобильного сервиса, и добавил его в свое решение. Кроме того, я добавил флаг SetIsHosted(true) в класс WebApiConfig. Наконец, я добавил атрибут AuthorizeLevel в TodoItemController и установил для него уровень пользователя. Служба успешно опубликована на Azure.

Когда я запускаю свое приложение и вызываю Login, это приводит к исключению 401. Неважно, запускаю ли я его локально или на хостинге.

Любые идеи?


person Community    schedule 11.05.2014    source источник


Ответы (1)


Эта функция — проверка подлинности на основе информации из клиентского SDK для учетных записей Microsoft (действующий SDK) или Facebook — в настоящее время не поддерживается в серверной части .NET для мобильных служб. Серверная часть .NET поддерживает либо аутентификацию через веб-интерфейс для Microsoft/Facebook/Google/Twitter, либо аутентификацию на стороне клиента для Azure Active Directory. Поддержка нужной функции должна быть реализована в ближайшем выпуске. Вы можете проверить блог команды Azure Mobile, чтобы узнать, когда он будет запущен.

person carlosfigueira    schedule 11.05.2014