c# - 如何在 Windows Phone 8 上获得 WP7 风格的 ANID?

标签 c# windows-phone-7 windows-phone-8 userid

我有一个 Windows Phone 7 应用程序,它依赖 ANID 将用户数据存储在远程服务器上。现在我正在准备它的 Windows Phone 8 版本。当用户下载此更新时,以前的 WP7 应用程序版本将被这个新的 WP8 版本取代。

但是有一个很大的问题:在WP8中有ANID2而不是ANID。我知道如何将 ANID 转换为 ANID2 ( Windows Phone ANID to ANID2 conversion on C#? )。但为此我需要整个 ANID。 在 WP7 中,ANID 看起来像:“A=2E23ACF364795673CD7EBB58FFFFFFFF&E=f48&W=3”。我提取了 32 个字符的值 (2E23ACF364795673CD7EBB58FFFFFFFF) 并将其用作 UID(我听说剩余部分可能会更改,但 32 个 id 将始终相同)。

所以我可能会在远程服务器上将 ANID 从 WP7 版本即时转换为 ANID2,但我没有全部 44 个字母——只有 32 个。

我可能会用另一个将整个 ANID 发送到服务器的 WP7 版本来更新 WP7 版本,但我不能相信所有人都会更新他们的应用程序,将他们的数据保存到服务器,然后在 wp8 时再次更新他们的应用程序这一事实版本将可用。

所以我的问题是:

  • 有什么方法可以在 WP8 应用程序中获取 WP7 样式的 ANID 值(可能通过反射或 C++)?

  • 是否可以将 ANID 转换为只有 32 个字符的 uid 部分的 ANID2?

  • 有什么方法可以查明特定的 ANID2 是否对应于现有的 32 个字符的 ANID 部分?

  • 如果我们知道开发人员 GUID,如何将 ANID2 反向转换为 ANID?

  • 用户可以选择要安装的版本(如果有 WP7 和 WP8 版本)吗?


更新

到目前为止,我的解决方法是为 wp8 版本 wp7 实用工具的用户提供从 ANID 生成 ANID2 并将这对存储到远程数据库。然后获得 wp8 版本更新的用户可以继续使用他的 wp7 应用配置文件。 尽管我仍在寻找更好的解决方案。

顺便说一句,我刚刚意识到:虽然我们试图遵循 MSFT“单一屏幕”的理念,并试图让我们的用户同时访问所有 MSFT 设备上的数据,但 MSFT 让我们持有和以某种方式为一个用户同步三个(!!!)不同的 ID,该用户使用相同的实时 ID 登录他的 wp7、wp8 和 Windows 8 设备! MSFT 不希望我们过多地看到这个实时 ID,以至于给我们提供了三种不同的匿名化表示。可笑,伙计们!

最佳答案

问题中描述了唯一的方法:在主应用程序的 wp8 版本中发布带有指向它的链接的隐藏实用程序。实用程序本身是一个可以访问 ANID 的 wp7 二进制文件,使用 dev GUID 可以生成 ANID2。它将两个值发送到服务器,当用户使用 ANID2 服务器检查字典并找到相应的 ANID 时。不是那么简单,但很容易。希望对某人有所帮助。

关于c# - 如何在 Windows Phone 8 上获得 WP7 风格的 ANID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22596685/

相关文章:

c# - 为什么在 ValidateIdentity(OAuthValidateIdentityContext context) 中调用 context.Rejected() 后调用 webapi Controller 的方法

c# - ASP.NET MVC 如何处理来自数据库的动态日期时间格式

c# - 将一个 CryptoStream 封装在多个其他 CryptoStream 中会提高安全性吗?

c# - Windows Phone 8 中的 ListBox 自动下一行

c# - 'await' 运算符只能在异步 lambda 表达式中使用 Windows Phone 8

c# - 我们如何为 Windows Phone 8 创建、写入和读取 excel 文件

c# - 如何通过 webAPI 传递\用户 azure continue token

c# - 索引超出范围抛出但索引并没有真正超出范围

c# - WebClient 不支持并发 I/O 操作。

c# - 想在 WP7 中安装相同但名称不同的应用程序