2014-09-25 12 views
6

जब आप Google क्लाउड एंडपॉइंट्स के साथ प्रमाणीकृत करते हैं, यदि कई Google खाते साइन इन हैं, जो पहले से ही आपकी ऐप अनुमति दे चुके हैं, तो यह केवल डिफ़ॉल्ट खाता चुनता है, जैसे जीमेल करेगा ।Google क्लाउड एंडपॉइंट्स - उपयोगकर्ता को स्विच करें/फिर से साइन इन करने की आवश्यकता है

1) जीमेल में Google खाते को शीर्ष दाएं कोने में स्विच करने की क्षमता है। मैं कुछ समान कैसे प्राप्त करूं?

2) क्या आप किसी उपयोगकर्ता को अपने Google खाते में फिर से साइन इन करने की आवश्यकता हो सकती है भले ही वे पहले से साइन इन हैं? इसी तरह जब कोई उपयोगकर्ता अपनी खाता सेटिंग्स बदलता है।

उत्तर

3

मुझे एक रास्ता मिला है, लेकिन यह थोड़ा दुखद है कि यह सुविधा gapi.auth.authorize में शामिल नहीं है (या दस्तावेज नहीं है)।

वैसे भी, यदि आप मैन्युअल रूप से प्राधिकरण पॉपअप खोलते हैं, और उसके बाद परिणामी टोकन को संसाधित करते हैं, तो आप prompt=select_account जैसे अतिरिक्त पैरामीटर पास कर सकते हैं, जो उपयोगकर्ता को अपना खाता चुनने की अनुमति देगा।

यहां एक कोड उदाहरण है। पॉपअप अवरुद्ध करने के साथ, पॉपअप को अवरुद्ध न होने के लिए आपको इस फ़ंक्शन को onclick ईवेंट में कॉल करना होगा।

इस प्रकार, कोड वास्तव में उत्पादन तैयार नहीं है। हम ऐसे मामलों का प्रबंधन नहीं करते हैं जैसे उपयोगकर्ता अपनी सहमति देने से इनकार करते हैं, और हम समाप्ति समय जैसे अतिरिक्त टोकन जानकारी पास नहीं करते हैं।

var switchUserAccount = function (callback) { 
     var popup = window.open("https://accounts.google.com/o/oauth2/auth?client_id=102862643449-geb89aoann7dj6tsha4mtkhvos5mk01b.apps.googleusercontent.com" 
       + "&prompt=select_account" 
       + "&scope=https://www.googleapis.com/auth/userinfo.email" 
       + "&redirect_uri=https://david-sandbox.appspot.com/autoclose.html" 
       + "&access_type=online&response_type=token", "thewindow"); 

     var waitForPopup = function() { 
      try { 
       var token = popup.location.hash.substring(14).split("&")[0]; 
       console.log("FOund token !" + token); 
       if (token == "") { 
        console.log("Not ready yet") 
        setTimeout(waitForPopup, 500); 
       } else { 
        gapi.auth.setToken({access_token: token}); 
        popup.close(); 
        callback(); 
       } 
      } 
      catch (e) { 
       console.log("Not ready yet, exception") 
       setTimeout(waitForPopup, 500); 
      } 
     }; 

     waitForPopup(); 
    } 
संबंधित मुद्दे