我正在尝试使用Live SDK和Azure移动服务在我的C ++商店应用中构建单点登录功能(类似于针对.NET应用here所描述的内容)。
我正在使用Azure移动C ++库和live_connect.h wrapper。以下是我的代码:
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身份验证似乎工作正常但是当我使用auth令牌登录Zumo时,我在上面的catch块中得到以下异常:
经过一番玩耍后。我认为C#SDK返回的Live authToken与C ++ API返回的不同。 Azure Mobile服务实际上需要C#SDK返回的内容。我已发布此问题here。
我做错了什么?
答案 0 :(得分:0)
问题证明是Live REST API在C ++中返回的令牌。似乎没有通过用于向Live Service进行身份验证的WinRT API请求正确的信息。解决这个问题。
已在this MSDN Forums post上发布了正确的代码段。