Google+ साइन-इन से माइग्रेट करें

उपयोगकर्ताओं पर, दायरे में होने वाले बदलावों के असर को कम करने का तरीका

  1. अगर आपके ऐप्लिकेशन के लिए पुष्टि किए गए उपयोगकर्ता के ईमेल पते की ज़रूरत है और इसके लिए आपने पहले profile.emails.read का इस्तेमाल किया है, तो email का इस्तेमाल करें.
  2. profile.emails.read के लिए, पुष्टि के स्वीकार किए गए अनुरोध के साथ अनुमति पाएं. मैं पुष्टि के लिए कैसे सबमिट करूं? देखें
  3. पूर्व उपयोगकर्ता टोकन को उस सीमा में निरस्त करें जिसे निकाला जाना है या ऐप्लिकेशन का ऐक्सेस पूरी तरह से निकालना है. उदाहरण के लिए, profile.emails.read ऐक्सेस वाले टोकन को रद्द करना चाहिए. हमारा सुझाव है कि जब आपके उपयोगकर्ता ऐप्लिकेशन का इस्तेमाल कर रहे हों, तब सहमति रद्द करने का विकल्प लागू करें. इससे आपको तुरंत उपयोगकर्ता की सहमति मिल जाएगी.
  4. अपने उपयोगकर्ताओं को नए दायरे, जैसे कि email को profile.emails.read के बिना, फिर से सहमति देने के लिए कहें.
  5. उस स्क्रीन कॉन्फ़िगरेशन को हटाएं जिसे Google API के लिए OAuth के तौर पर सहमति दी गई है.

अपनी साइट को 'Google+ साइन-इन' से 'Google साइन-इन' पर माइग्रेट करने के लिए, आपको जो बदलाव करने होंगे, वे इस बात पर निर्भर करते हैं कि आप किस 'Google+ साइन-इन' फ़्लो का इस्तेमाल करते हैं. आम तौर पर, माइग्रेशन के लिए आपको अपना साइन-इन बटन, अनुरोध किए गए दायरे, और Google से प्रोफ़ाइल की जानकारी वापस पाने के निर्देशों को अपडेट करना पड़ता है.

अपना साइन-इन बटन अपडेट करते समय, G+ को रेफ़र न करें या लाल रंग का इस्तेमाल न करें. ब्रैंडिंग के हमारे अपडेट किए गए दिशा-निर्देशों का पालन करें.

ज़्यादातर G+ साइन-इन ऐप्लिकेशन ने दायरों के कुछ कॉम्बिनेशन का अनुरोध किया: plus.login, plus.me, और plus.profile.emails.read. आपको अपने दायरों को इस तरह फिर से मैप करना होगा:

पुराना दायरा नया दायरा
plus.login profile
plus.me openid
plus.profile.emails.read email

'Google+ साइन-इन' को लागू करने वाले कई लोगों ने कोड फ़्लो का इस्तेमाल किया था. इसका मतलब है कि Android, iOS या JavaScript ऐप्लिकेशन को Google से OAuth कोड मिलता है और क्लाइंट उस कोड को सर्वर पर वापस भेजता है. साथ ही, क्रॉस-साइट अनुरोध की जालसाज़ी से भी इसे सुरक्षित रखने में मदद मिलती है. इसके बाद, सर्वर कोड की पुष्टि करता है और रीफ़्रेश और ऐक्सेस टोकन हासिल करता है, ताकि people.get एपीआई से उपयोगकर्ता की प्रोफ़ाइल की जानकारी ली जा सके.

Google अब सुझाव देता है कि आप एक आईडी टोकन का अनुरोध करें और उस आईडी टोकन को अपने क्लाइंट से अपने सर्वर पर भेजें. आईडी टोकन में क्रॉस-साइट जालसाज़ी सुरक्षा पहले से मौजूद होती है और आपके सर्वर पर भी इनकी पुष्टि की जा सकती है. इससे Google के सर्वर से उपयोगकर्ता की प्रोफ़ाइल की जानकारी पाने के लिए एक अतिरिक्त एपीआई कॉल से बचा जा सकता है. अपने सर्वर पर आईडी टोकन की पुष्टि करने के निर्देशों का पालन करें.

अगर आप अब भी प्रोफ़ाइल की जानकारी पाने के लिए, कोड फ़्लो का इस्तेमाल करना चाहते हैं, तो आप ऐसा कर सकते हैं. आपके सर्वर को ऐक्सेस टोकन मिलने के बाद, आपको हमारे साइन-इन डिस्कवरी दस्तावेज़ में दिए गए userinfo एंडपॉइंट से, उपयोगकर्ता की प्रोफ़ाइल की जानकारी लेनी होगी. एपीआई रिस्पॉन्स को Google+ प्रोफ़ाइल रिस्पॉन्स से अलग तरीके से फ़ॉर्मैट किया जाता है. इसलिए, आपको पार्स करने के तरीके को नए फ़ॉर्मैट में अपडेट करना होगा.

एचटीएमएल साइन-इन बटन माइग्रेट करना

अगर आपने अपने पेज में, g-signin क्लास को किसी एलिमेंट में असाइन करके, 'Google+ साइन-इन करें' बटन शामिल किया है, तो ये बदलाव करें:

  • जब आप <meta> टैग, data- एट्रिब्यूट या पैरामीटर ऑब्जेक्ट में अपना क्लाइंट आईडी बताते हैं, तो स्ट्रिंग clientid को client_id में बदलें, जैसा कि इस उदाहरण में दिखाया गया है:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • 'साइन-इन करें' बटन एलिमेंट को g-signin के बजाय, g-signin2 क्लास असाइन करें. साथ ही, एक ही कॉलबैक के बजाय, सफलता और कामयाब न होने वाले अलग-अलग कॉलबैक बताएं, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

    <!-- Google+ Sign-in (old) -->
    <div
      class="g-signin"
      data-callback="signinCallback">
    </div>
    

    <!-- Google Sign-in (new) -->
    <div
      class="g-signin2"
      data-onsuccess="onSignIn"
      data-onfailure="onSignInFailure">
    </div>
    
  • किसी सिंगल कॉलबैक हैंडलर के बजाय, 'सफलता और असफलता' हैंडलर की जानकारी दें, जैसा कि इस उदाहरण में दिखाया गया है:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    
  • इन बदलावों से, आपके डिफ़ॉल्ट दायरों को बदलकर profile email openid हो जाएगा. आपको उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी, जैसे कि नाम, ईमेल पता, और फ़ोटो की इमेज का यूआरएल यहां मिल सकता है:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

डाइनैमिक रूप से रेंडर किए गए साइन इन बटन को माइग्रेट करना

अगर आपने gapi.signin.render() को कॉल करके अपने पेज में 'Google+ साइन-इन करें' बटन शामिल किया है, तो ये बदलाव करें:

  • जब आप <meta> टैग, data- एट्रिब्यूट या पैरामीटर ऑब्जेक्ट में अपना क्लाइंट आईडी बताते हैं, तो स्ट्रिंग clientid को client_id में बदलें, जैसा कि इस उदाहरण में दिखाया गया है:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • साइन-इन बटन को gapi.signin.render() के बजाय gapi.signin2.render() की मदद से रेंडर करें, जैसा कि यहां दिए गए उदाहरण में दिखाया गया है:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • किसी सिंगल कॉलबैक हैंडलर के बजाय, 'सफलता और असफलता' हैंडलर की जानकारी दें, जैसा कि इस उदाहरण में दिखाया गया है:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

इन बदलावों से, आपके डिफ़ॉल्ट दायरों को बदलकर profile email openid हो जाएगा. getBasicProfile() तरीके का इस्तेमाल करके, उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी पाई जा सकती है.

JavaScript से शुरू किए गए साइन इन फ़्लो को माइग्रेट करना

अगर उपयोगकर्ताओं के 'साइन इन करें' बटन पर क्लिक करने पर, आपने gapi.auth.signIn() को कॉल करके साइन इन फ़्लो शुरू किया था, तो ये बदलाव करें:

  • नीचे दिए गए उदाहरण की तरह, जब आप क्लाइंट आईडी की जानकारी <meta> टैग, data- एट्रिब्यूट या पैरामीटर ऑब्जेक्ट में देते हैं, तो clientid स्ट्रिंग को client_id में बदलें:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • एक बटन दबाए जाने पर साइन-इन फ़्लो शुरू करने के लिए, gapi.auth2.attachClickHandler() का इस्तेमाल करें, जैसा कि इस उदाहरण में दिखाया गया है:

    // Google+ Sign-in (old)
    var signinButton = document.getElementById('signinButton');
    signinButton.addEventListener('click', function() {
      gapi.auth.signIn(additionalParams);
    });
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init();
    auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
    
  • किसी सिंगल कॉलबैक हैंडलर के बजाय, 'सफलता और असफलता' हैंडलर की जानकारी दें, जैसा कि इस उदाहरण में दिखाया गया है:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

इन बदलावों से, आपके डिफ़ॉल्ट दायरों को बदलकर profile email openid हो जाएगा. getBasicProfile() तरीके को कॉल करके, उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी पाई जा सकती है.

हाइब्रिड सर्वर-साइड फ़्लो माइग्रेट करना

अगर आपने अपने सर्वर को पास करने के लिए, एक बार इस्तेमाल होने वाला ऑथराइज़ेशन कोड पाने के लिए JavaScript API का इस्तेमाल किया है, तो ये बदलाव करें:

  • स्कोप को https://www.googleapis.com/auth/plus.login से profile में बदलें.

  • अपने मौजूदा कॉलबैक फ़ंक्शन के साथ gapi.auth2.grantOfflineAccess() तरीके का इस्तेमाल करें, जैसा कि इस उदाहरण में दिखाया गया है:

    <!-- Google+ Sign-in (old) -->
    <div class="g-signin"
      data-scope="https://www.googleapis.com/auth/plus.login"
      data-clientid="YOUR_CLIENT_ID"
      data-redirecturi="postmessage"
      data-accesstype="offline"
      data-callback="signInCallback">
    </div>
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init({
      client_id: 'YOUR_CLIENT_ID',
      scope: 'profile'
    });
    
    ...
    
    auth2.grantOfflineAccess().then(signInCallback);
    

अगर आपको उपयोगकर्ता के ईमेल का ऐक्सेस भी चाहिए, तो स्कोप पैरामीटर में email जोड़ें.