2012-04-24 12 views
15

क्या साइन इन बटन पर क्लिक किए बिना ऐप (सिल्वरलाइट, WP7 कैन) के लिए लाइव करने का कोई तरीका है।लाइव एसडीके - साइनइन बटन के बिना साइन इन करने का प्रयास करें

मैं मुझे गतिशील रूप से लॉग करना चाहता हूं, उदाहरण के लिए: जब आप ऐप शुरू करते हैं, तो मैं लॉग इन करना चाहता हूं। बटन का उपयोग किये बिना इसे कैसे करें?

उत्तर

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!"); 
     } 
    } 
} 
+0

क्रेडिट का इंतजार है: http://social.msdn.microsoft.com/Forums/en-GB/messengerconnect/thread/ a1ae8e9c-47a5-4bd8-b821-33dc1a0d6e94 – Richard

+2

धन्यवाद। माइक्रोसॉफ्ट इसे दस्तावेज करना चाहिए। – ashraf

+0

कोड के इस छोटे और मीठे टुकड़े के लिए बहुत बहुत धन्यवाद। मुझे LiveAuthClient का उपयोग करने के बारे में एक स्पष्ट विचार नहीं मिला था। लाइव एसडीके के लिए नया एमएसडीएन दस्तावेज इतना गलत है, [LiveAuthClient (स्ट्रिंग) विधि] [1] कहता है स्ट्रिंग पैरामीटर रीडायरेक्ट यूआरआई है। यह क्लाइंट आईडी के बारे में कुछ भी उल्लेख नहीं करता है। [1] http://msdn.microsoft.com/en-us/library/live/microsoft.live.liveauthclient.aspx – Adarsha

1

कोड उदाहरण के लिए धन्यवाद - मुझे Windows Phone 8, आदि :)

के लिए कोड का अद्यतन संस्करण के साथ आने में मदद की
using System.Windows; 
using Microsoft.Live; 

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

    private LiveConnectClient _connection; 
    private LiveLoginResult _login; 

    public LiveLogin() 
    { 
     this.Loaded += this.OnLoaded; 
    } 

    private async void OnLoaded(object sender, RoutedEventArgs routedEventArgs) 
    { 
     //---------------------------------------------------------------------- 
     // Login to skydrive 
     //---------------------------------------------------------------------- 
     await SkydriveLogin(); 
    } 

    private async Task SkydriveLogin() 
    { 
     try 
     { 
      //---------------------------------------------------------------------- 
      // Initialize our auth client with the client Id for our specific application 
      //---------------------------------------------------------------------- 
      LiveAuthClient authClient = new LiveAuthClient("**your client id here**"); 

      //---------------------------------------------------------------------- 
      // Using InitializeAsync we can check to see if we already have an connected session 
      //---------------------------------------------------------------------- 
      _login = await authClient.InitializeAsync(_scopes); 

      //---------------------------------------------------------------------- 
      // If not connected, bring up the login screen on the device 
      //---------------------------------------------------------------------- 
      if (_login.Status != LiveConnectSessionStatus.Connected) 
      { 
       _login = await authClient.LoginAsync(_scopes); 
      } 

      //---------------------------------------------------------------------- 
      // Initialize our connection client with our login result 
      //---------------------------------------------------------------------- 
      _connection = new LiveConnectClient(_login.Session); 
     } 
     catch (Exception ex) 
     { 
      //TODO: Add connection specific exception handling 
     } 
    } 
} 
+0

यह कोड निम्न त्रुटि दे रहा है- 'Microsoft.Live.LiveAuthException' प्रकार का अपवाद mscorlib.ni.dll में हुआ लेकिन उपयोगकर्ता कोड में नहीं किया गया था –

10

महान जवाब रिचर्ड। यह वास्तव में बहुत मदद की।

मैंने लोगों से शिकायत की कुछ टिप्पणियों को देखा कि वे प्रारंभिक पूर्ण घटना नहीं ढूंढ पाए। यदि आप .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; 
     } 


    } 

एमएस एक async के लिए प्राइमर here

संबंधित मुद्दे