在开发Windows 8 Store App中,最简便快捷地实现与Windows Azure Mobile Service的移动应用,就是利用Windows Azure Management Portal(管理门户)所提供的初始项目下载,然后根据自己需要增加定制代码。
为了更好地管理用户和增加安全性,往往增加身份验证功能,例如与Microsoft Live Connect Services连接,实现对LiveID等的验证。当然,也可以集成第三方(例如Facebook, Twitter, Google等)的身份验证服务。
具体可见:http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users-dotnet/
在实际开发中,更多情况是在一个现有的项目基础上进行扩展,增加对Windows Azure Mobile Service的支持。但在具体开放身份验证环节,即Windows Azure Mobile Service和Live Connect services的联通环节,有时候容易出现问题。
例如,有的时候,虽然可以弹出身份验证对话框,但却一直出现验证失败的信息提示。有时候会觉得是否是Windows Live出了问题,但经过深入分析会发现,实际上问题出现在自己这里,而且涉及到Store App、Windows Azure Mobile Service、Live Connect services和Visual Studio开发项目环境配置等各个相关环节。
在Visual Studio 2012调试环境输出窗口中,有时候会发现以下类似的信息:“{YOUR JAVASCRIPT FUNCTION NAME}: The authentication process failed with error: The application requesting authentication tokens is either disabled or incorrectly configured.”就是一个非常典型的例子。
经过归纳和整理,下面列出一些如何自己动手打通Windows Azure Mobile Service和Live Connect services的相对完整的攻略。
. Windows Store App开发中心的相关配置
将自己的应用在Windows Store App开发中心(https://appdev.microsoft.com/StorePortals/en-US/Home/Index)进行注册和配置。其中在开发和测试阶段至少(和重点)要配置好App Name及Advanced Features。
其中,在Advanced Features中要配置好“Push notifications and Live Connect services info”,这个是实现LiveID身份验证所必需的;如果后续使用Windows Push Notification service (WNS)进行提醒服务,这也是必需的。
[关键操作]:需要将下面的IDENTITY NAME和PUBLISHER信息记录下来:
[关键操作]:这个信息需要将Visual Studio项目中package.appxmanifest文件的<Identity Name="{YOUR APP IDENTITY NAME}" Version="1.0.0.0" Publisher="YOUR APP PUBLISHER NAME" />进行替换。
. Live Connect开发中心的相关配置
实际上,上面配置“Push notifications and Live Connect services info”的页面已经转到了Live Connect开发中心(https://manage.dev.live.com/)。
在之前页面中,通过点击”Authenticating your service”进入到下面的页面:
[关键操作]:在这里,需要记录Package Security Identifier (SID)和Client Secret的值。
在Live Connect开发中心仪表盘(https://manage.dev.live.com/?biciid=LcDevPortal),选择要配置的应用名称,然后再设置(Settings)菜单下的API Settings中,首先验证Package Security Identifier (SID)和Client Secret的值和之前记录的一致性,然后将所建立的Windows Azure Mobile Service URL(例如:https://{YOUR MOBILE SERVICE NAME}.azure-mobile.net/)填写到Redirect domain项目中。同时,可以看到已经生成的Package SID。
[关键操作]:在这里,需要记录Redirect domain和Package SID的值。
. Windows Azure Management Portal(管理门户)的相关配置
进入所创建的Mobile Service应用中,进入IDENTITY(身份)页面:
[关键操作]:在这里,填写之前记录的Client ID和Client Secret的值。
如果要使用提醒功能,可以再进入PUSH(推送)页面:
[关键操作]:在这里,填写之前记录的Client Secret和Package Security Identifier (SID)的值。
在Mobile Service管理门户网页的下方,点击MANAGE KEYS,进入Manage Access Keys对话框:
[关键操作]:在这里,记录APPLICATION KEY的值。
. Visual Studio开发项目的相关配置
在项目中,需要在Reference中增加Live SDK;如果之前没有安装的话,请先下载(http://msdn.microsoft.com/en-us/live/ff621310.aspx)并安装。
[关键操作]:在Reference中增加对Live SDK的引用,会自动添加相关文件,例如针对JavaScript,增加wl.js。在相关登录处理页面的程序中,在wl.init过程中,设置redirect url,替换为之前记录的Redirect domain的值。
[关键操作]:在相关登录处理页面的程序中,实例化Windows Azure Mobile Service客户端,增加下面的代码,其中,分别替换参数为之前记录的Windows Azure Mobile Service URL和APPLICATION KEY的值:
var client = new WindowsAzure.MobileServiceClient( " https://{YOUR MOBILE SERVICE NAME}.azure-mobile.net/", "{YOUR MOBILE SERVICE APPLICATION KEY}" );
var client = new WindowsAzure.MobileServiceClient(
" https://{YOUR MOBILE SERVICE NAME}.azure-mobile.net/",
"{YOUR MOBILE SERVICE APPLICATION KEY}"
);
现在就可以按照自己的要求,开发相关代码,实现对LiveID等的验证。
大功告成了吗?且慢,好像还不行。追踪运行时错误信息,发现“The app couldn’t resolve ms-appx://{YOUR IDENTITY NAME}/undefined because of this error: RESOURCE_NOT_FOUND.”
看来还忘了什么步骤。不错,在Visual Studio的Solution Explorer中,将应用的项目与Store(商店)关联。
[关键操作]:将应用的项目与Store(商店)关联。如下图:
运行一下,OK!