2016-12-18 245 views
0

由於我正在設置Azure移動應用程序的一個全新實例,並將其連接到現有Azure移動服務的現有數據庫,因此我正面臨一個有趣的挑戰。生產。將Azure移動服務遷移到Azure移動應用程序:UserId已更改

使用AMS在生產中運行的應用程序具有Microsoft帳戶身份驗證,我們使用context.userid字段過濾user'data服務器端。該字段看起來像MicrosoftAccount:abcdef...

與微軟認證支持設立一個新的Azure的移動應用之後,我得到一個用戶標識符,不同的是,像SID:ABC ...

使用文檔,我能得到更多的細節有關使用getIdentity() API用戶身份:

context.user.getIdentity().then((data) => { });

但我還是無法找到是在AMS世界中使用的「老」用戶ID ......,所以我不能有現有的數據之間的聯繫和新的應用程序。

有什麼想法?

回答

0

不知道context.userid究竟是指郵件地址。 但是,您可以通過以下方式獲取登錄用戶的帳戶電子郵件。

context.user.getIdentity().then(function (userInfo) { 
    var userId = userInfo.aad.claims.emailaddress; 
}); 
+0

的問題是,在現有的DB(用於生產)我沒有電子郵件地址的用戶。我只擁有Azure移動服務提供的userId ... – japf

+0

@jalfp,由於每個IDP都提供了userid,所以'sid'是由Azure Mobile App提供的會話ID。您可以登錄https:// .azurewebsites.net/.auth/me以查找您在數據庫中使用的用戶標識是否存在於'user_claims'部分。然後你可以嘗試在'context.user'對象中找到你的userid,根據源代碼包含它:https://github.com/Azure/azure-mobile-apps-node/blob/master/src /auth/user.js#L24 –

+0

@ GaryLiu-MSFT我試過這種確切的方法,但我沒有找到適當的ID :-(我在數據庫中的ID看起來像這樣:MicrosoftAccount:edb421b011b7955b07c8bfd73c77a8dc而我看到在索賠/用戶對象看起來像這樣{「typ」:「urn:microsoftaccount:id」,「val」:「ca5037e782461b00」} – japf