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- एट्रिब्यूट या पैरामीटर ऑब्जेक्ट में अपना क्लाइंट आईडी बताते समय, स्ट्रिंग 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 जोड़ें.