Live SDK - 尝试在没有SignInButton的情况下登录

Ric*_*ard 15 c# silverlight sdk live windows-phone-7

有没有办法登录到Live的应用程序(Silverlight,WP7可以),而无需单击登录按钮.

我想动态地记录我,例如:当你启动应用程序时,我想登录给我.如何在不诉诸按钮的情况下做到这一点?

Ric*_*ard 29

我想出了怎么做,所以我决定分享:

using System.Windows;
using Microsoft.Live;

public class LiveLogin
{

    private static readonly string[] scopes = 
        new string[] { 
            "wl.signin", 
            "wl.basic", 
            "wl.calendars", 
            "wl.calendars_update", 
            "wl.contacts_calendars", 
            "wl.events_create" };

    private LiveAuthClient authClient;
    private LiveConnectClient liveClient;


    public LiveLogin()
    {
        this.authClient = new LiveAuthClient("**your client id here**");
        this.authClient.InitializeCompleted += authClient_InitializeCompleted;
        this.authClient.InitializeAsync(scopes);
    }

    private void authClient_InitializeCompleted(object sender, LoginCompletedEventArgs e)
    {
        if (e.Status == LiveConnectSessionStatus.Connected)
        {
            this.liveClient = new LiveConnectClient(e.Session);
        }
        else
        {
            this.authClient.LoginCompleted += authClient_LoginCompleted;
            this.authClient.LoginAsync(scopes);
        }
    }

    private void authClient_LoginCompleted(object sender, LoginCompletedEventArgs e)
    {
        if (e.Status == LiveConnectSessionStatus.Connected)
        {
            this.liveClient = new LiveConnectClient(e.Session);
            MessageBox.Show("Signed");
        }
        else
        {
            MessageBox.Show("Failed!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.微软应该记录它. (2认同)

Fas*_*ons 10

理查德.这真的帮了很多忙.

我注意到有人抱怨他们无法找到InitializedCompleted事件.如果您在.Net 4.5中编码,那么您需要遵循异步方法的异步/等待模式.上面的类看起来像这样:

public class LiveLogin
    {
        private static readonly string[] Scopes =
            new[]
                {
                    "wl.signin",
                    "wl.basic",
                    "wl.calendars",
                    "wl.calendars_update",
                    "wl.contacts_calendars",
                    "wl.events_create"
                };

        private LiveAuthClient _authClient;



        public async Task<LiveConnectClient> Login()
        {
            _authClient = new LiveAuthClient("**your client id here**");

            LiveLoginResult result = await _authClient.InitializeAsync(Scopes);
            if (result.Status == LiveConnectSessionStatus.Connected)
            {
                return new LiveConnectClient(result.Session);
            }
            result = await _authClient.LoginAsync(Scopes);
            if (result.Status == LiveConnectSessionStatus.Connected)
            {
                return new LiveConnectClient(result.Session);
            }
            return null;
        }


    }
Run Code Online (Sandbox Code Playgroud)

MS 在这里有异步等待入门