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

Posted

技术标签:

【中文标题】将 Azure 移动服务迁移到 Azure 移动应用:UserId 已更改【英文标题】:Migration Azure Mobile Services to Azure Mobile App: UserId has changed 【发布时间】:2016-12-18 19:32:44 【问题描述】:

我正面临一个有趣的挑战,因为我正在设置一个全新的 Azure 移动应用实例,该实例连接到在生产中运行的现有 Azure 移动服务的现有数据库。

使用 AMS 在生产中运行的应用具有 Microsoft 帐户身份验证,我们使用 context.userid 字段在服务器端过滤用户的数据。这个字段看起来像MicrosoftAccount:abcdef...

在设置一个支持 Microsoft 身份验证的新 Azure 移动应用后,我得到了一个不同的 userId,例如 sid:ABC...

使用文档,我能够使用getIdentity() api 获取有关用户身份的更多详细信息:

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

但我仍然无法找到在 AMS 世界中使用的“旧”用户 ID……因此我无法在现有数据和新应用之间建立链接。

有什么想法吗?

【问题讨论】:

【参考方案1】:

我想知道context.userid 是否准确地表示电子邮件地址。 但是,您可以通过以下方式获取登录用户的帐户电子邮件。

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

【讨论】:

问题是在现有数据库(用于生产)中,我没有用户的电子邮件地址。我只有 Azure 移动服务可用的 userId... @jalfp,由于用户ID应该由每个IDP提供,sid是Azure移动应用提供的会话ID。您可以登录 https://.azurewebsites.net/.auth/me 以查看您在数据库中使用的用户 ID 是否存在于 user_claims 部分中。然后您可以尝试在 context.user 对象中找到您的用户 ID,因为它包含根据源代码:github.com/Azure/azure-mobile-apps-node/blob/master/src/auth/… @GaryLiu-MSFT 我尝试了这种确切的方法,但我没有在适当的 id 中找到 :-( 我在 DB 中的 id 看起来像这样:MicrosoftAccount:edb421b011b7955b07c8bfd73c77a8dc 而我在声明/用户对象如下所示 "typ":"urn:microsoftaccount:id","val":"ca5037e782461b00" @GaryLiu-MSFT 我能想到的唯一解决方案是更新应用程序并推送我在 Azure 移动服务中使用 LiveSDK 登录后获得的新 MS 帐户 ID。唯一的问题是,如果人们不与此特定更新同步,我将无法在迁移后检索他们的内容。还有其他建议吗?谢谢, @japf,你是对的,我们建议你使用用户的电子邮件地址作为用户ID,因为注册的电子邮件是不变的值。

以上是关于将 Azure 移动服务迁移到 Azure 移动应用:UserId 已更改的主要内容,如果未能解决你的问题,请参考以下文章

Azure 移动服务 - 多个 azure 活动目录

将文件从 Azure 存储 blob 移动到 Ftp 服务器

Azure 移动服务(推送通知)

AZURE - 如何将资源从租户迁移到另一个租户

无法将存储容器中的文件移动到 Azure 中的存档存储

Azure:将应用服务移动到另一个现有的应用服务计划