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

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

  1. अगर आपके ऐप्लिकेशन में किसी ऐसे उपयोगकर्ता के ईमेल पते की ज़रूरत है जिसकी पुष्टि हो चुकी है और आपने इस काम के लिए पहले profile.emails.read का इस्तेमाल किया था, तो इसके बजाय email का इस्तेमाल करें.
  2. मंज़ूरी पा चुके पुष्टि के अनुरोध के साथ profile.emails.read के लिए मंज़ूरी पाएं. मैं पुष्टि के लिए कैसे सबमिट करूं? लेख पढ़ें
  3. पिछले उपयोगकर्ता टोकन को उस दायरे से निरस्त करें जिसे हटाया जाना है या ऐप्लिकेशन का ऐक्सेस पूरी तरह से हटाएं. उदाहरण के लिए, profile.emails.read ऐक्सेस वाले टोकन को रद्द किया जाना चाहिए. हमारा सुझाव है कि जब आपके उपयोगकर्ता आपके ऐप्लिकेशन का इस्तेमाल करें, तब आप सहमति रद्द कर दें, ताकि आपको तुरंत उपयोगकर्ता की सहमति मिल सके.
  4. अपने उपयोगकर्ताओं से कहें कि वे profile.emails.read के बिना, नए दायरे, जैसे कि email के लिए फिर से सहमति दें.
  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- एट्रिब्यूट या पैरामीटर ऑब्जेक्ट में अपने Client-ID की जानकारी देते हैं, तो स्ट्रिंग 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- एट्रिब्यूट या पैरामीटर ऑब्जेक्ट में अपने Client-ID की जानकारी देते हैं, तो स्ट्रिंग 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- एट्रिब्यूट या पैरामीटर ऑब्जेक्ट में अपने Client-ID की जानकारी देते हैं, तो स्ट्रिंग को 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 जोड़ें.