将Azure移动服务迁移到Azure移动应用程序:UserId已更改

问题描述:

由于我正在设置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 ......,所以我不能有现有的数据之间的联系和新的应用程序。

有什么想法?

不知道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