C# 4.0 第一次成功登录后&;注销windows live登录按钮在windows phone上不起作用

C# 4.0 第一次成功登录后&;注销windows live登录按钮在windows phone上不起作用,c#-4.0,windows-phone-8,windows-phone,live-sdk,C# 4.0,Windows Phone 8,Windows Phone,Live Sdk,我正在创建一个使用Windows Phone Live帐户的应用程序&我就是这么做的 xaml 但是在我第一次成功登录和注销后,我无法登录live帐户,这意味着登录按钮不起作用,即使它没有被禁用。每次我在导航到登录页面时都会收到LiveConnectSessionStatus.Unknown状态。原因是什么?在注销操作中我还需要做些什么吗?请确认 感谢您在注销时使用创建新会话 public void LogOut() { var authClient = new Liv

我正在创建一个使用Windows Phone Live帐户的应用程序&我就是这么做的

xaml

但是在我第一次成功登录和注销后,我无法登录live帐户,这意味着
登录
按钮不起作用,即使它没有被禁用。
每次我在导航到登录页面时都会收到
LiveConnectSessionStatus.Unknown
状态。原因是什么?在注销操作中我还需要做些什么吗?请确认


感谢您在注销时使用创建新会话

 public void LogOut()
    {
        var authClient = new LiveAuthClient(ClientId);
        authClient.Logout();
    }
您必须使用从中登录的会话


为此,您将在会话更改处理程序中自动注销,您需要做的一切是:

    private LiveConnectClient client;

    private async void btnSignin_SessionChanged(object sender, LiveConnectSessionChangedEventArgs e)
    {
        if (e.Status == LiveConnectSessionStatus.Connected)
        {
            client = new LiveConnectClient(e.Session);               
        }
        else
        {
            infoTextBlock.Text = "Not signed in.";
        }
    }

您不必为自己的注销编程-登录后,buton会将自己更改为注销。在登录和会话更改后,您就有了客户端-您可以做您需要的事情。

您好,谢谢您的回复。如何将会话id附加到身份验证客户端?@asitis您是否使用不同的按钮注销?哦。!!我现在明白原因了。有一个计时器正在运行,用于在调试模式下在屏幕上显示内存消耗详细信息。在释放模式下,我现在检查了&没有发现问题。我刚刚评论了计时器的初始化&它很好。不知道为什么会发生这种情况?你知道如何通过另一个按钮单击从live帐户注销吗?@asitis你必须同时设置两个按钮eventhandlers?你想使用不同的按钮或选项来注销,而不是使用SignIn按钮吗?@Romasz不,不需要。但是我只是想避免这个问题,我尝试了和你说的一样的方法,但是在第一次登录和注销后遇到了同样的问题。哦。!!我现在明白原因了。有一个计时器正在运行,用于在调试模式下在屏幕上显示内存消耗详细信息。在释放模式下,我现在检查了&没有发现问题。我刚刚评论了计时器的初始化&它很好。不知道为什么会这样?我想不是这样的。如果您给wl.sign,那么当用户第一次成功登录时,他就不必注销(应用程序会记住登录名和密码)。当您不注销时,在您第二次导航并订阅sessionchanged之后,它将与connected一起触发。检查这个-它工作吗?是的,这在未注销的情况下是正确的。但在注销的情况下,我会得到未知状态。你知道如何通过点击另一个按钮从live帐户注销吗?当你注销(在我的应用程序中)时,你会被未知的会话更改(你注销)。注销后,应用程序会忘记用户登录名和密码(一部手机上可能有多个用户)。所以,当您首先再次导航时,会在sessionchanged中获得未知事件。但您可以通过单击按钮登录,再次提示您输入登录名和密码。
 public void LogOut()
    {
        var authClient = new LiveAuthClient(ClientId);
        authClient.Logout();
    }
    private LiveConnectClient client;

    private async void btnSignin_SessionChanged(object sender, LiveConnectSessionChangedEventArgs e)
    {
        if (e.Status == LiveConnectSessionStatus.Connected)
        {
            client = new LiveConnectClient(e.Session);               
        }
        else
        {
            infoTextBlock.Text = "Not signed in.";
        }
    }