0

我正在嘗試使用Live SDK和Azure移動服務在我的C++商店應用中構建單一登錄功能(類似於.NET應用程序描述的內容here)。在C++ Windows應用商店應用中使用Microsoft帳戶和Azure移動服務的單點登錄

我正在使用Azure Mobile C++ Library和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()); 
} 

的現場認證似乎很好地工作,但是當我使用的身份驗證令牌登錄到謨,我得到上面的catch塊以下異常:

Exception while logging into Azure Mobile Service using existing auth token

經過一番玩弄。我認爲由C#SDK返回的Live authToken與C++ API返回的不同。 Azure Mobile服務實際上期望C#SDK返回的內容。我已發佈有關此問題here

我在做什麼錯?

+0

我還沒有使用C++,但LiveClient-> authenticationToken()'的價值是什麼? – carlosfigueira

回答

0

問題原來是Live REST API在C++中返回的令牌。似乎正確的信息沒有通過WinRT API被請求用於驗證Live Service。解決這個問題。

正確的代碼片段已張貼在this MSDN Forums post

相關問題