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 जोड़ें.