单点登录在C ++ Windows应用商店应用中使用Microsoft帐户和Azure移动服务

时间:2013-12-09 22:45:54

标签: c++ windows-runtime visual-studio-2013 azure-mobile-services live-sdk

我正在尝试使用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块中得到以下异常:

Exception while logging into Azure Mobile Service using existing auth token

经过一番玩耍后。我认为C#SDK返回的Live authToken与C ++ API返回的不同。 Azure Mobile服务实际上需要C#SDK返回的内容。我已发布此问题here

我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题证明是Live REST API在C ++中返回的令牌。似乎没有通过用于向Live Service进行身份验证的WinRT API请求正确的信息。解决这个问题。

已在this MSDN Forums post上发布了正确的代码段。