我使用http://msdn.microsoft.com/en-us/library/dn631823.aspx中的示例代码在执行任何OneDrive操作之前执行签名。它似乎在我最初编码时工作但现在我在休息后回到它,任何尝试(比方说)读取文件夹都会给我错误:
提供的访问令牌已过期。
我用来登录的代码是:
currentSession = null;
try
{
var authClient = new LiveAuthClient();
LiveLoginResult result = await authClient.LoginAsync(new string[] { "wl.signin", "wl.skydrive" });
if (result.Status == LiveConnectSessionStatus.Connected)
{
currentSession = result.Session;
Debug.WriteLine("... succeeeded");
}
else
Debug.WriteLine("... not connected, status is {0}", result.Status);
}
catch (LiveAuthException ex)
{
// Display an error message.
Debug.WriteLine("LiveAuthException: {0}", ex.Message);
}
catch (LiveConnectException ex)
{
// Display an error message.
Debug.WriteLine("LiveConnectException: {0}", ex.Message);
}
其中currentSession在类中声明为私有变量,然后在文件夹代码中使用:
LiveConnectClient liveClient = new LiveConnectClient(currentSession);
LiveOperationResult operationResult = await liveClient.GetAsync("me/skydrive");
dynamic result = operationResult.Result;
令我担心的是文档说:
创建LiveAuthClient对象并调用InitializeAsync方法初始化Live SDK。然后使用wl.signin和wl.skydrive作用域调用LoginAsync方法以启用单点登录并允许用户访问OneDrive。
但示例代码DOESN&#T; T对InitializeAsync进行了任何引用,并且呼叫似乎存在差异,因此我并不清楚应该使用哪一个(如果有的话)。
这适用于通用应用程序,虽然目前我只是在使用WP8.1 C#/ XAML部分。我使用的是Live SDK 5.6。
感谢。
答案 0 :(得分:0)
正如我添加的评论中所述,“过期令牌”错误很可能是由模拟器上的错误日期/时间设置引起的。