Я пытаюсь встроить функцию единого входа в приложение C ++ Store с помощью Live SDK и мобильных служб Azure (аналогично тому, что описано для приложений .NET). Вот).
Я использую библиотеку Azure Mobile C ++ и Оболочка live_connect.h. Вот как выглядит мой код:
void MapQuizVC12::StartPage::LoginIntoLive()
{
LiveClient->login(L"wl.basic wl.signin").then([this](bool isLoggedIn)
{
LiveClient->get(L"me").then([this](json::value v)
{
auto token = json::value::object();
token[L"authenticationToken"] = json::value::string(LiveClient->authentication_token());
AzureMobileHelper::mapquizMobileService::GetClient()
.login(azure::mobile::authentication_provider::microsoft, token)
.then([](task<azure::mobile::user> user)
{
try
{
user.wait();
}
catch (std::exception e)
{
}
}, concurrency::task_continuation_context::use_current());
}, concurrency::task_continuation_context::use_current());
}, concurrency::task_continuation_context::use_current());
}
Кажется, что Live-аутентификация работает нормально, но когда я использую токен авторизации для входа в Zumo, я получаю следующее исключение в блоке catch выше:
После некоторой игры вокруг. Я полагал, что Live authToken, возвращаемый C # SDK, отличается от того, который возвращается C ++ API. Мобильный сервис Azure ожидает, что возвращается C # SDK. Я написал об этой проблеме Вот.
Что я делаю неправильно?
Проблема оказалась в том, что Live REST API возвращался в C ++. Кажется, правильная информация не запрашивалась через WinRT API, используемый для аутентификации в Live Service. Исправление, которое решает эту проблему.
Правильный фрагмент кода был размещен на это сообщение MSDN Форумы.
Других решений пока нет …