7

के साथ लॉग इन होने पर पता लगाने के लिए कैसे मैं लाइव कनेक्ट एसडीके (http://msdn.microsoft.com/en-us/live/) के शीर्ष पर मेट्रो सी # स्काईडाइव एपीआई का निर्माण कर रहा हूं डिफ़ॉल्ट) - विंडोज 8 में उपयोगकर्ता के पास विंडोज 8 मशीन में एक स्थानीय खाता या लाइव खाता के साथ साइनइन करने का विकल्प होता है।मेट्रो ऐप - लाइव आईडी या स्थानीय खाता

लाइव कनेक्ट एसडीके का उपयोग कर, जब एक स्थानीय खाते का उपयोग करता है, तो मैं

// assume wlscopes is properly set 

LiveAuthClient liveAuthClient = new LiveAuthClient(); 
LiveLoginResult loginResult = await liveAuthClient.LoginAsync(wlscopes); 

// do some stuff on skydrive 

liveAuthClient.Logout(); // <-- issue only with live account, not local 

कहते हैं, यह मुझे लॉग आउट (महान)

जब मैं एक ही कोड जब एक लाइव खाते का उपयोग कर कहते हैं, मुझे एक अनचाहे अपवाद मिलता है - मैं इस त्रुटि के आसपास {} पकड़ {} भी कोशिश नहीं कर सकता।

अपवाद:

Cannot sign out from the application since the user account is connected. (Exception from HRESULT: 0x8086000E) 

जाहिर है के बाद से उपयोगकर्ता है कि एक लाइव खाते के अंतर्गत प्रवेश होने से लॉगआउट नहीं कर सकते हैं, मेरे एपीआई पता लगाने के लिए वर्तमान उपयोगकर्ता एक जीवित खाते का उपयोग कर रहा है अगर जरूरत है तो मैं लॉगआउट बुला रोका जा सकता है () तरीका।

तो .... मेरा सवाल यह है कि, मुझे कैसे पता चलेगा कि उपयोगकर्ता ने 8 खाते में किस खाते के प्रकार से साइन इन किया है?

+0

आप क्यों नहीं बस प्रवेश नहीं नहीं कर सकते http://msdn.microsoft.com/en-us/library/windows/apps/windows.security.authentication.onlineid.onlineidauthenticator.cansignout.aspx#Y0

नीचे संपत्ति है कि हम उपयोग करने की आवश्यकता है उपयोगकर्ता अपने खाते से बाहर? उन्हें निर्णय लेने की अनुमति दें। LoginResult के परिणाम क्या हैं। मुझे विश्वास नहीं है कि माइक्रोसॉफ्ट इस तरह की जानकारी का पर्दाफाश करेगा अन्यथा यह मैलवेयर का कारण बन जाएगा जो आपके विंडोज लाइव सत्र को लक्षित करता है। –

+0

जब आप लाइव खाते के साथ विंडोज 8 में लॉग इन करते हैं, तब तक आप 'लॉग आउट' नहीं कर सकते जब तक आप किसी अन्य खाते या स्थानीय खाते पर स्विच नहीं करते ... विंडोज 8 आपको सब कुछ में साइन इन करता है। मैं सहमत हूं, वे इसका पर्दाफाश नहीं कर सकते हैं, लेकिन फिर एसडीके एक असंगत त्रुटि फेंक रहा है ... तो मैं इसे कैसे रोकूं? –

उत्तर

5

मिले जवाब:

Windows.Security.Authentication.OnlineId.OnlineAuthenticator.CanSignOut 

कोड उदाहरण::

public async Task<bool> Logout() 
    { 
     // Check to see if the user can sign out (Live account or Local account) 
     var onlineIdAuthenticator = new OnlineIdAuthenticator(); 
     var serviceTicketRequest = new OnlineIdServiceTicketRequest("wl.basic", "DELEGATION"); 
     await onlineIdAuthenticator.AuthenticateUserAsync(serviceTicketRequest); 

     if (onlineIdAuthenticator.CanSignOut) 
     { 
      LiveAuthClient.Logout();    
     } 

     return true; 
    } 
संबंधित मुद्दे