使用Live SDK获取“过期令牌”。示例代码是否正确?

时间:2014-12-25 16:18:27

标签: c# onedrive

我使用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。

感谢。

1 个答案:

答案 0 :(得分:0)

正如我添加的评论中所述,“过期令牌”错误很可能是由模拟器上的错误日期/时间设置引起的。