WindowsPhone开发 +使用Live SDK相关API操作SkyDrive + IsolatedStorageSettings的Bug。
环境描述:Windows 7 + Visual Studio 2010 + 真机(HTC c110e radar)。
问题描述:使用Live SDK相关API操作SkyDrive。说实话微软的这个SDK还真是老旧,.Net4.5已经对异步调用提供了完善的API。这个还这么老旧不更新,开发起来确实很耗精力。
操作SkyDrive的步骤分为简单的两部:1.验证身份(Microsoft.Live.LiveAuthClient)。2.各种操作(Microsoft.Live.LiveConnectClient)。
问题麻烦在于这两个步骤操作都是异步,但是很蛋疼的微软提供的API是那种类似 (***_Complalted)的。。硬生生把咱们的一个操作序列割裂为两个部分。
我这边软件只要退出去之后,在进入软件就要再次手动点击《同意》按钮才能再次访问SkyDrive。但是,我看WindowsPhone7版的电子书软件:书中圣 身份验证了一次就好久才会再次要求重新验证身份,根本不用像我这边每次进软件访问SkyDrive就要再次点击《同意》按钮
问题推测:我估计是《书中圣》中在身份验证之后的信息被存储了。
采取措施:所以,我就把经过身份验证后得到的状态(Microsoft.Live.LiveConnectSession)给存进了IsolatedStorageSettings.ApplicationSettings["session"]=liveConnectSession。。
之后当场进行获取(LiveConnectSession)(IsolatedStorageSettings.ApplicationSettings["session"])可以得到正确的值.
但是,当软件退出再打开后,获取(LiveConnectSession)(IsolatedStorageSettings.ApplicationSettings["session"])的值就会报异常:NotKeyFindException。
用软件查看了隔离存储空间跟目录下的_ApplicationSettings文件,发现被我给存进的键值对中没有“session”,倒是多了一个key:Microsoft.Live.LiveAuthClient.RefreshToken。
这貌似是个Bug。