विस्तृत अनुमतियों को कैसे मैनेज करें

खास जानकारी

ज़्यादा जानकारी वाली अनुमतियों की मदद से, उपभोक्ताओं को यह कंट्रोल करने की सुविधा मिलती है कि वे हर ऐप्लिकेशन के साथ अपने खाते का कौनसा डेटा शेयर करना है. इससे उपयोगकर्ताओं और डेवलपर, दोनों को फ़ायदा मिलता है. साथ ही, उन्हें ज़्यादा कंट्रोल, पारदर्शिता, और सुरक्षा मिलती है. इस गाइड से आपको ज़रूरी जानकारी ज़्यादा जानकारी वाली अनुमतियों को मैनेज करने के लिए, ऐप्लिकेशन में होने वाले बदलावों और उन्हें अपडेट करने के तरीके के बारे में ज़्यादा जानें.

ज़्यादा जानकारी वाली अनुमति क्या है?

मान लें कि आपने बेहतर ढंग से काम करने में मदद करने वाला एक ऐसा ऐप्लिकेशन बनाया है जिसमें ईमेल और कैलेंडर, दोनों के दायरे का अनुरोध किया जाता है. आपके उपयोगकर्ता हो सकता है कि आप अपनी ऐप्लिकेशन का उपयोग केवल Google कैलेंडर के लिए करना चाहें, लेकिन Gmail के लिए नहीं. विस्तृत OAuth के साथ अनुमतियां दी हैं, तो उपयोगकर्ता सिर्फ़ Google Calendar को अनुमति देने का विकल्प चुन सकते हैं, Gmail को नहीं. उपयोगकर्ताओं को खास डेटा का ऐक्सेस देने से, डेटा का एक्सपोज़र कम हो जाता है. साथ ही, कोई रुकावट नहीं और उपयोगकर्ताओं को उनकी डिजिटल लाइफ़ पर निजता को प्राथमिकता देकर सशक्त बनाता है. यह ज़रूरी है कि ऐसी स्थितियों को मैनेज करने के लिए अपना ऐप्लिकेशन डिज़ाइन करें.

एक से ज़्यादा गैर-साइन-इन दायरे का अनुरोध किए जाने पर

साइन-इन और नॉन-साइन-इन के दायरे

साइन-इन करने और साइन-इन न करने वाले, दोनों दायरों का अनुरोध करने वाले ऐप्लिकेशन के लिए, उपयोगकर्ताओं को सबसे पहले सहमति दिखती है साइन-इन के दायरों का पेज (email, profile, और openid). उपयोगकर्ताओं की सहमति के बाद अपनी बुनियादी पहचान से जुड़ी जानकारी (नाम, ईमेल पता, और प्रोफ़ाइल फ़ोटो) शेयर करेंगे, तो उपयोगकर्ताओं को जिन दायरों में साइन-इन करने की अनुमति नहीं है उनके लिए, अनुमतियों की ज़्यादा जानकारी वाली स्क्रीन. ऐसी स्थिति में, ऐप्लिकेशन को यह जांच करनी होगी कि उपयोगकर्ताओं ने कौनसे दायरे दिए हैं. साथ ही, उन्हें यह नहीं मानना चाहिए कि उपयोगकर्ताओं ने सभी अनुरोधों को पूरा कर दिया है दायरे. नीचे दिए गए उदाहरण में, वेब ऐप्लिकेशन, साइन इन के सभी तीन स्कोप और Google Drive के ऐसे स्कोप का अनुरोध करता है जिसमें साइन इन करने की ज़रूरत नहीं होती. साइन-इन के दायरे के लिए उपयोगकर्ताओं की सहमति के बाद, उपयोगकर्ताओं को Google Drive की अनुमति के लिए, अनुमतियों के बारे में पूरी जानकारी देने वाली स्क्रीन:

साइन-इन और नॉन-साइन-इन के दायरे

एक से ज़्यादा गैर-साइन-इन दायरे

जब ऐप्लिकेशन ज़्यादा डेटा का अनुरोध करेंगे, तब उपयोगकर्ताओं को अनुमति वाली एक स्क्रीन दिखेगी. का इस्तेमाल करें. उपयोगकर्ता यह चुन सकते हैं कि उन्हें ऐप्लिकेशन के साथ कौनसी अनुमतियां देनी हैं. अनुमति का अनुरोध करने वाली स्क्रीन का एक उदाहरण यहां दिया गया है उपयोगकर्ता के Gmail मैसेज और Google Calendar डेटा को ऐक्सेस करने की अनुमति:

एक से ज़्यादा गैर-साइन-इन दायरे

केवल साइन-इन करने का अनुरोध करने वाले एप्लिकेशन के लिए स्कोप (email, profile, और openid), विस्तृत जिस स्क्रीन पर अनुमतियों के लिए सहमति दी जाती है उस पर यह सुविधा लागू नहीं है. उपयोगकर्ता या तो पूरे साइन इन को स्वीकार या अस्वीकार करते हैं अनुरोध. दूसरे शब्दों में, अगर ऐप्लिकेशन सिर्फ़ साइन-इन स्कोप (एक, दो या सभी) का अनुरोध करते हैं तीसरा), तो जिस स्क्रीन पर अनुमति दी जाती है उस पर जानकारी लागू नहीं होती.

जिन ऐप्लिकेशन में सिर्फ़ एक ऐसे स्कोप के लिए अनुरोध किया जाता है जिसमें साइन इन करने की ज़रूरत नहीं होती, उनके लिए ज़्यादा जानकारी वाली अनुमति की सहमति वाली स्क्रीन लागू नहीं होती. दूसरे शब्दों में, उपयोगकर्ता चाहें, तो पूरे अनुरोध को अस्वीकार कर दें. साथ ही, सहमति वाली स्क्रीन पर कोई चेकबॉक्स न दिखे. नीचे दी गई टेबल इस स्क्रीन पर खास जानकारी तब दिखती है, जब ऐसी स्क्रीन दिखती है जहां अनुमतियों को सहमति दी जाती है.

साइन-इन के दायरों की संख्या साइन-इन नहीं करने वाले दायरों की संख्या ऐसी स्क्रीन जहां अनुमतियों के लिए सहमति दी जाती है
1-3 0 लागू नहीं
1-3 1+ लागू है
0 1 लागू नहीं
0 2+ लागू है

पता करें कि आपके ऐप्लिकेशन पर असर पड़ा है या नहीं

अपने आवेदन के सभी सेक्शन की पूरी तरह से समीक्षा करें Google OAuth 2.0 ऑथराइज़ेशन एंडपॉइंट का इस्तेमाल, अनुमति के अनुरोधों के लिए किया जाता है. उन ऐप्लिकेशन पर ध्यान दें जो एक से ज़्यादा स्कोप का अनुरोध करते हैं. ऐसा इसलिए, क्योंकि वे उपयोगकर्ताओं को अनुमति की ज़्यादा जानकारी वाली सहमति वाली स्क्रीन चालू करते हैं. ऐसे मामलों में, पक्का करें कि आपका कोड ऐसे मामले को हैंडल कर पाए जहां सिर्फ़ उपयोगकर्ता कुछ स्कोप को इस्तेमाल करने की अनुमति देता है.

कैसे पता लगाएं कि आपका ऐप्लिकेशन एक से ज़्यादा स्कोप का इस्तेमाल कर रहा है या नहीं

अपने ऐप्लिकेशन कोड की जांच करें या आउटगोइंग नेटवर्क कॉल, ताकि यह पता लगाया जा सके कि Google OAuth 2.0 आपका ऐप्लिकेशन अनुमति देने के अनुरोध करेगा. इसकी वजह से, अनुमतियों की ज़्यादा जानकारी वाली स्क्रीन दिखेगी ताकि इन्हें दिखाया जा सके.

अपने ऐप्लिकेशन कोड की जांच करें

अपने ऐप्लिकेशन कोड के उन सेक्शन की समीक्षा करें जहां से Google OAuth पर कॉल किए जा रहे हैं ऑथराइज़ेशन एंडपॉइंट का इस्तेमाल करें, ताकि उपयोगकर्ताओं से अनुमति ली जा सके. अगर किसी Google API का इस्तेमाल किया जा रहा है क्लाइंट लाइब्रेरी, अक्सर यह देखा जा सकता है कि क्लाइंट में आपके ऐप्लिकेशन के अनुरोधों के कौनसे दायरे देखे जा सकते हैं शुरू करने के चरण. नीचे दिए गए सेक्शन में इसके कुछ उदाहरण दिए गए हैं. आपको उन SDK टूल के दस्तावेज़ का दस्तावेज़ जिनका इस्तेमाल आपका ऐप्लिकेशन, Google OAuth 2.0 को मैनेज करने के लिए करता है. इससे यह पक्का किया जा सकता है कि आवेदन पर असर पड़ा है, जो नीचे दिए गए उदाहरणों में बताए गए दिशा-निर्देशों का इस्तेमाल करके संदर्भ.

Google Identity Services

नीचे दी गई Google Identity Services JavaScript लाइब्रेरी कोड स्निपेट, TokenClient को एक से ज़्यादा वे दायरे जो साइन-इन नहीं करते. वेब पर, अनुमतियों के लिए सहमति देने वाली विस्तृत स्क्रीन दिखेगी ऐप्लिकेशन, उपयोगकर्ताओं से अनुमति मांगता है.

const client = google.accounts.oauth2.initTokenClient({
  client_id: 'YOUR_CLIENT_ID',
  scope: 'https://www.googleapis.com/auth/calendar.readonly \
  https://www.googleapis.com/auth/contacts.readonly',
  callback: (response) => {
    ...
  },
});

Python

नीचे दिया गया कोड स्निपेट, google-auth-oauthlib.flow मॉड्यूल का इस्तेमाल करके अनुमति पाने के लिए अनुरोध बनाना होगा; scope पैरामीटर में दो पैरामीटर शामिल हैं वे दायरे जो साइन-इन नहीं करते. वेब पर, अनुमतियों के लिए सहमति देने वाली विस्तृत स्क्रीन दिखेगी ऐप्लिकेशन, उपयोगकर्ताओं से अनुमति मांगता है.

import google.oauth2.credentials
import google_auth_oauthlib.flow

# Use the client_secret.json file to identify the application requesting
# authorization. The client ID (from that file) and access scopes are required.
flow = google_auth_oauthlib.flow.Flow.from_client_secrets_file(
    'client_secret.json',
    scopes=['https://www.googleapis.com/auth/calendar.readonly',
                    'https://www.googleapis.com/auth/contacts.readonly'])

Node.js

फ़ॉलो किया गया कोड स्निपेट एक google.auth.OAuth2 ऑब्जेक्ट बनाता है, जो अनुमति देने के अनुरोध में मौजूद ऐसे पैरामीटर जिनके scope पैरामीटर में दो पैरामीटर शामिल हैं वे दायरे जो साइन-इन नहीं करते. वेब ऐप्लिकेशन पर, अनुमति के बारे में जानकारी देने वाली स्क्रीन दिखेगी उपयोगकर्ताओं से अनुमति मांगता है.

const {google} = require('googleapis');

/**
  * To use OAuth2 authentication, we need access to a CLIENT_ID, CLIENT_SECRET, AND REDIRECT_URI
  * from the client_secret.json file. To get these credentials for your application, visit
  * https://console.cloud.google.com/apis/credentials.
  */
const oauth2Client = new google.auth.OAuth2(
  YOUR_CLIENT_ID,
  YOUR_CLIENT_SECRET,
  YOUR_REDIRECT_URL
);

// Access scopes for read-only Calendar and Contacts.
const scopes = [
  'https://www.googleapis.com/auth/calendar.readonly',
  'https://www.googleapis.com/auth/contacts.readonly']
];

// Generate a url that asks permissions
const authorizationUrl = oauth2Client.generateAuthUrl({
  // 'online' (default) or 'offline' (gets refresh_token)
  access_type: 'offline',
  /** Pass in the scopes array defined above.
    * Alternatively, if only one scope is needed, you can pass a scope URL as a string */
  scope: scopes,
  // Enable incremental authorization. Recommended as best practices.
  include_granted_scopes: true
});

आउटगोइंग नेटवर्क कॉल की जांच करें

नेटवर्क कॉल की जांच करने का तरीका, आपकी ज़रूरतों के हिसाब से अलग-अलग होगा किस तरह का ऐप्लिकेशन है.

नेटवर्क कॉल की जांच करते समय, Google OAuth पर भेजे गए अनुरोध देखें ऑथराइज़ेशन एंडपॉइंट और scope पैरामीटर की जांच करें.

इन वैल्यू की वजह से, अनुमतियों की विस्तृत जानकारी वाली स्क्रीन दिखती है.

  • scope पैरामीटर में, साइन-इन के दायरे और साइन-इन न करने वाले स्कोप शामिल हैं.

    नीचे दिए गए सैंपल अनुरोध में, साइन-इन के लिए इस्तेमाल किए गए तीनों स्कोप और साइन-इन न करने वाले एक स्कोप को शामिल किया गया है उपयोगकर्ता की Google डिस्क फ़ाइलों का मेटाडेटा देखने के लिए:

    https://accounts.google.com/o/oauth2/v2/auth?
    access_type=offline&
    scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile%20openid%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&
    include_granted_scopes=true&
    response_type=code&
    redirect_uri=YOUR_REDIRECT_URL&
    client_id=YOUR_CLIENT_ID
  • scope पैरामीटर में, साइन-इन न करने वाले एक से ज़्यादा स्कोप शामिल हैं.

    उपयोगकर्ता की Google Drive को देखने के लिए, नीचे दिए गए अनुरोध के एक सैंपल में, ऐसे दो दायरे शामिल हैं जो साइन-इन नहीं करते हैं मेटाडेटा और Google Drive की खास फ़ाइलों को मैनेज करना:

  • https://accounts.google.com/o/oauth2/v2/auth?
    access_type=offline&
    scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.file&
    include_granted_scopes=true&
    response_type=code&
    redirect_uri=YOUR_REDIRECT_URL&
    client_id=YOUR_CLIENT_ID

विस्तृत अनुमतियां मैनेज करने के सबसे सही तरीके

अगर आपको पता चलता है कि ज़्यादा जानकारी वाली अनुमतियों को मैनेज करने के लिए, आपके ऐप्लिकेशन को अपडेट करना ज़रूरी है, तो आपको अपने कोड में ज़रूरी अपडेट करने चाहिए, ताकि एक से ज़्यादा स्कोप के लिए सहमति को सही तरीके से मैनेज किया जा सके. सभी ऐप्लिकेशन को नीचे दिए गए सबसे सही तरीकों का पालन करना चाहिए:

  1. समीक्षा करें Google API सेवाएं: उपयोगकर्ता के डेटा से जुड़ी नीति का पालन करें और पक्का करें कि उनका पालन किया जा रहा हो.
  2. किसी टास्क के लिए ज़रूरी स्कोप का अनुरोध करें. आपने लोगों तक पहुंचाया मुफ़्त में को Google OAuth 2.0 नीति का पालन करना होगा सिर्फ़ उन दायरों का अनुरोध करें ज़रूरत होती है. आपको कई सारे प्रॉडक्ट या सेवाओं के लिए के दायरे में नहीं आता, जब तक कि यह आपके ऐप्लिकेशन के मुख्य फ़ंक्शन के लिए ज़रूरी न हो. बंडलिंग एक साथ कई स्कोप जोड़ने होते हैं, खास तौर पर उन उपयोगकर्ताओं के लिए जिन्हें पहली बार आपके ऐप्लिकेशन ने नहीं जाना है ऐप्लिकेशन की सुविधाओं से, उनके लिए इसकी ज़रूरतों को समझना मुश्किल हो सकता है अनुमतियां दी हैं. इससे लोगों की दिलचस्पी बढ़ सकती है. साथ ही, लोगों को आपके ऐप्लिकेशन में और ज़्यादा दिलचस्पी लेने से रोका जा सकता है का इस्तेमाल करें.
  3. अनुमति का अनुरोध करने से पहले, उपयोगकर्ताओं को बताएं कि अनुमति क्यों चाहिए. साफ़ तौर पर बताएं कि आपके ऐप्लिकेशन को अनुरोध की गई अनुमति की ज़रूरत क्यों है, आप उपयोगकर्ता के डेटा का क्या करेंगे और अनुरोध स्वीकार करने से उपयोगकर्ता को किस तरह से फ़ायदा मिलेगा. हमारी रिसर्च से पता चलता है कि इन वजहों से लोगों का भरोसा और दिलचस्पी बढ़ती है.
  4. इस्तेमाल करें इंक्रीमेंटल ऑथराइज़ेशन जब भी आपका ऐप्लिकेशन दायरे का अनुरोध करता है, तब उसे एक से ज़्यादा ऐक्सेस टोकन को मैनेज करने की ज़रूरत नहीं पड़ती.
  5. देखें कि उपयोगकर्ताओं ने कौनसे दायरे दिए हैं. कई विज्ञापनों का अनुरोध करने पर तो हो सकता है कि उपयोगकर्ता आपके ऐप्लिकेशन अनुरोधों के सभी दायरे ऐक्सेस न कर पाएं. आपके ऐप्लिकेशन को हमेशा ऐसा करना चाहिए यह जांच की जा सकती है कि उपयोगकर्ता ने कौनसे दायरे दिए हैं. साथ ही, दायरे को कम करने के लिए, सुविधाएँ. इन पर Google OAuth 2.0 नीतियों का पालन करें एक से ज़्यादा पार्टनर के लिए सहमति लेना दायरे और उपयोगकर्ता से सहमति के लिए फिर से तब ही पूछें, जब उन्होंने साफ़ तौर पर बताया हो ऐसी खास सुविधा का इस्तेमाल करने का इंटेंट जिसके लिए स्कोप की ज़रूरत होती है.

विस्तृत अनुमतियां मैनेज करने के लिए अपने ऐप्लिकेशन को अपडेट करें

Android ऐप्लिकेशन

आपको उन SDK टूल के दस्तावेज़ देखने चाहिए जिनका इस्तेमाल, Google OAuth 2.0 से इंटरैक्ट करने के लिए किया जाता है और इसके आधार पर विस्तृत अनुमतियों को मैनेज करने के लिए अपनी ऐप्लिकेशन अपडेट करें सबसे सही तरीके देखें.

अगर आपको auth.api.signin Google OAuth 2.0 के साथ इंटरैक्ट करने के लिए, Play Services में मौजूद SDK टूल का इस्तेमाल किया जा सकता है requestPermissions फ़ंक्शन का अनुरोध करें, ताकि स्कोप के सबसे छोटे सेट का अनुरोध किया जा सके, और hasPermissions फ़ंक्शन को जांचें करता है जिससे उपयोगकर्ता को दिए गए दायरे विस्तृत अनुमतियां चाहिए.

Chrome एक्सटेंशन ऐप्लिकेशन

आपको Google Ads API का इस्तेमाल करना चाहिए Chrome Google OAuth 2.0 के साथ काम करने के लिए Identity API सबसे सही तरीके.

नीचे दिए गए उदाहरण में, विस्तृत अनुमतियों को ठीक से मैनेज करने का तरीका बताया गया है.

manifest.json

उदाहरण के तौर पर दी गई मेनिफ़ेस्ट फ़ाइल में, Chrome एक्सटेंशन ऐप्लिकेशन के लिए, साइन इन न करने वाले दो स्कोप तय किए गए हैं.

{
  "name": "Example Chrome extension application",
  ...
  "permissions": [
      "identity"
    ],
  "oauth2" : {
      "client_id": "YOUR_CLIENT_ID",
      "scopes":["https://www.googleapis.com/auth/calendar.readonly",
                "https://www.googleapis.com/auth/contacts.readonly"]
  }
}

गलत तरीका

सभी या कुछ नहीं

अनुमति देने की प्रोसेस शुरू करने के लिए, उपयोगकर्ता बटन पर क्लिक करते हैं. कोड स्निपेट में यह माना गया है कि उपयोगकर्ताओं को manifest.json फ़ाइल में बताए गए दो दायरों के लिए, "सभी या कुछ नहीं" वाली सहमति वाली स्क्रीन दिखाई जाती है. यह इस बात की जांच नहीं करता है कि उपयोगकर्ताओं ने कौनसे स्कोप दिए हैं.

oauth.js

...
document.querySelector('button').addEventListener('click', function () {
  chrome.identity.getAuthToken({ interactive: true },
      function (token) {
          if (token === undefined) {
            // User didn't authorize both scopes.
            // Updating the UX and application accordingly
            ...
          } else {
            // User authorized both or one of the scopes.
            // It neglects to check which scopes users granted and assumes users granted all scopes.

            // Calling the APIs, etc.
            ...
          }
      });
});

सही तरीका

सबसे छोटे स्कोप

ज़रूरत के हिसाब से दायरों के सबसे छोटे सेट को चुनें

ऐप्लिकेशन को सिर्फ़ ज़रूरत के हिसाब से छोटे दायरों के लिए अनुरोध करना चाहिए. हमारा सुझाव है कि जब किसी टास्क को पूरा करने के लिए ज़रूरी हो, तब आपका ऐप्लिकेशन एक बार में एक स्कोप का अनुरोध करे.

इस उदाहरण में, यह माना गया है कि manifest.json में बताए गए दोनों स्कोप फ़ाइल, दायरों के सबसे छोटे सेट होते हैं. oauth.js फ़ाइल, Chrome का इस्तेमाल करती है Identity API का इस्तेमाल करें, ताकि Google पर पुष्टि की प्रक्रिया शुरू की जा सके. आपको इसके लिए ऑप्ट-इन करना चाहिए विस्तृत अनुमतियां सक्षम करें, ताकि उपयोगकर्ताओं के पास आपकी का इस्तेमाल करें. आपके ऐप्लिकेशन को यह जांच करनी चाहिए कि वह उपयोगकर्ताओं के जवाब को सही तरीके से मैनेज करे जिसके दायरे को उपयोगकर्ता अनुमति देते हैं.

oauth.js

...
document.querySelector('button').addEventListener('click', function () {
  chrome.identity.getAuthToken({ interactive: true, enableGranularPermissions: true },
      function (token, grantedScopes) {
          if (token === undefined) {
            // User didn't authorize any scope.
            // Updating the UX and application accordingly
            ...
          } else {
            // User authorized the request. Now, check which scopes were granted.
            if (grantedScopes.includes('https://www.googleapis.com/auth/calendar.readonly'))
            {
              // User authorized Calendar read permission.
              // Calling the APIs, etc.
              ...
            }
            else
            {
              // User didn't authorize Calendar read permission.
              // Update UX and application accordingly
              ...
            }

            if (grantedScopes.includes('https://www.googleapis.com/auth/contacts.readonly'))
            {
              // User authorized Contacts read permission.
              // Calling the APIs, etc.
              ...
            }
            else
            {
              // User didn't authorize Contacts read permission.
              // Update UX and application accordingly
              ...
            }
          }
      });
});

iOS, iPadOS, और macOS ऐप्लिकेशन

आपको Google OAuth 2.0 के साथ इंटरैक्ट करने के लिए इस्तेमाल किए जाने वाले SDK टूल के दस्तावेज़ों को देखना चाहिए. साथ ही, सबसे सही तरीकों के आधार पर, ज़्यादा जानकारी वाली अनुमतियों को मैनेज करने के लिए, अपने ऐप्लिकेशन को अपडेट करना चाहिए.

अगर iOS और macOS के लिए Google साइन-इन लाइब्रेरी का इस्तेमाल किया जाता है Google OAuth 2.0 के साथ इंटरैक्ट करने के लिए, आपको विस्तृत हैंडलिंग के बारे में दस्तावेज़ अनुमतियां दी हैं.

वेब ऐप्लिकेशन

आपको उन SDK टूल के दस्तावेज़ देखने चाहिए जिनका इस्तेमाल, Google OAuth 2.0 से इंटरैक्ट करने के लिए किया जाता है और इसके आधार पर विस्तृत अनुमतियों को मैनेज करने के लिए अपनी ऐप्लिकेशन अपडेट करें सबसे सही तरीके देखें.

सर्वर-साइड (ऑफ़लाइन) ऐक्सेस

सर्वर-साइड (ऑफ़लाइन) ऐक्सेस मोड का इस्तेमाल करने के लिए, आपको ये काम करने होंगे:
  • सर्वर सेट अप करें और अनुमति पाने के लिए, सार्वजनिक तौर पर ऐक्सेस किया जा सकने वाला एंडपॉइंट बनाएं कोड.
  • Google Cloud Console के में, अपने सार्वजनिक एंडपॉइंट के रीडायरेक्ट यूआरआई को कॉन्फ़िगर करें.

नीचे दिया गया कोड स्निपेट एक NodeJS का उदाहरण दिखाता है. इस उदाहरण में, दो नॉन-साइन-इन स्कोप का अनुरोध किया गया है. उपयोगकर्ताओं को अनुमति से जुड़ी ज़्यादा जानकारी वाली सहमति वाली स्क्रीन दिखेगी.

गलत तरीका

सभी या कुछ नहीं

लोगों को अनुमति देने वाले यूआरएल पर रीडायरेक्ट किया जाता है. कोड स्निपेट के मुताबिक यह माना जा सकता है कि लोगों को "कुछ भी नहीं" के साथ नीचे दिए गए दो स्कोप के लिए सहमति वाली स्क्रीन scopes रनर. यह इस बात की जांच नहीं करता है कि उपयोगकर्ताओं ने कौनसे स्कोप दिए हैं.

main.js

...
const oauth2Client = new google.auth.OAuth2(
  YOUR_CLIENT_ID,
  YOUR_CLIENT_SECRET,
  YOUR_REDIRECT_URL
);

// Access scopes for two non-Sign-In scopes - Google Calendar and Contacts
const scopes = [
  'https://www.googleapis.com/auth/contacts.readonly',
  'https://www.googleapis.com/auth/calendar.readonly'
];

// Generate a url that asks permissions for the Google Calendar and Contacts scopes
const authorizationUrl = oauth2Client.generateAuthUrl({
  // 'online' (default) or 'offline' (gets refresh_token)
  access_type: 'offline',
  // Pass in the scopes array defined above
  scope: scopes,
  // Enable incremental authorization. Recommended as best practices.
  include_granted_scopes: true
});

async function main() {
  const server = http.createServer(async function (req, res) {
    // Example on redirecting user to Google OAuth 2.0 server.
    if (req.url == '/') {
      res.writeHead(301, { "Location": authorizationUrl });
    }
    // Receive the callback from Google OAuth 2.0 server.
    if (req.url.startsWith('/oauth2callback')) {
      // Handle the Google OAuth 2.0 server response
      let q = url.parse(req.url, true).query;

      if (q.error) {
        // User didn't authorize both scopes.
        // Updating the UX and application accordingly
        ...
      } else {
        // User authorized both or one of the scopes.
        // It neglects to check which scopes users granted and assumes users granted all scopes.

        // Get access and refresh tokens (if access_type is offline)
        let { tokens } = await oauth2Client.getToken(q.code);
        // Calling the APIs, etc.
        ...
      }
    }
    res.end();
  }).listen(80);
}
सही तरीका

सबसे छोटा दायरा

ज़रूरत के हिसाब से दायरों के सबसे छोटे सेट को चुनें

ऐप्लिकेशन को सिर्फ़ ज़रूरत के हिसाब से छोटे दायरों के लिए अनुरोध करना चाहिए. इसका सुझाव दिया जाता है कि आपका ऐप्लिकेशन एक बार में एक ही स्कोप का अनुरोध करता है, जब किसी टास्क को पूरा करने के लिए इसकी ज़रूरत होती है. जब भी आपका ऐप्लिकेशन दायरे का अनुरोध करता है, तब उसे इंक्रीमेंटल ऑथराइज़ेशन ताकि आपको कई ऐक्सेस टोकन मैनेज करने की ज़रूरत न पड़े.

अगर आपके ऐप्लिकेशन को बिना साइन-इन वाले एक से ज़्यादा दायरों का अनुरोध करना चाहिए, तो आपको हमेशा इंक्रीमेंटल ऑथराइज़ेशन का अनुरोध करते समय और जांच करें कि उपयोगकर्ताओं ने कौन से दायरों को अनुमति दी है.

इस उदाहरण में, यह माना गया है कि ऐप्लिकेशन के लिए, बताए गए दोनों दायरे ज़रूरी हैं अच्छी तरह से काम कर रहा है. आपको इसके लिए ऑप्ट-इन करना चाहिए विस्तृत अनुमतियां सक्षम करें, ताकि उपयोगकर्ताओं के पास आपकी का इस्तेमाल करें. आपके ऐप्लिकेशन को यह जांच करनी चाहिए कि वह उपयोगकर्ताओं के जवाब को सही तरीके से मैनेज करे किन दायरों को अनुमति दी गई है.

main.js

...
const oauth2Client = new google.auth.OAuth2(
  YOUR_CLIENT_ID,
  YOUR_CLIENT_SECRET,
  YOUR_REDIRECT_URL
);

// Access scopes for two non-Sign-In scopes - Google Calendar and Contacts
const scopes = [
  'https://www.googleapis.com/auth/contacts.readonly',
  'https://www.googleapis.com/auth/calendar.readonly'
];

// Generate a url that asks permissions for the Google Calendar and Contacts scopes
const authorizationUrl = oauth2Client.generateAuthUrl({
  // 'online' (default) or 'offline' (gets refresh_token)
  access_type: 'offline',
  // Pass in the scopes array defined above
  scope: scopes,
  // Enable incremental authorization. Recommended as best practices.
  include_granted_scopes: true,
  // Set to true to enable more granular permissions for Google OAuth 2.0 client IDs created before 2019.
  // No effect for newer Google OAuth 2.0 client IDs, since more granular permissions is always enabled for them.
  enable_granular_consent: true
});

async function main() {
  const server = http.createServer(async function (req, res) {
    // Redirect users to Google OAuth 2.0 server.
    if (req.url == '/') {
      res.writeHead(301, { "Location": authorizationUrl });
    }
    // Receive the callback from Google OAuth 2.0 server.
    if (req.url.startsWith('/oauth2callback')) {
      // Handle the Google OAuth 2.0 server response
      let q = url.parse(req.url, true).query;

      if (q.error) {
        // User didn't authorize both scopes.
        // Updating the UX and application accordingly
        ...
      } else {
        // Get access and refresh tokens (if access_type is offline)
        let { tokens } = await oauth2Client.getToken(q.code);
        oauth2Client.setCredentials(tokens);

        // User authorized the request. Now, check which scopes were granted.
        if (tokens.scope.includes('https://www.googleapis.com/auth/calendar.readonly'))
        {
          // User authorized Calendar read permission.
          // Calling the APIs, etc.
          ...
        }
        else
        {
          // User didn't authorize Calendar read permission.
          // Calling the APIs, etc.
          ...
        }

        // Check which scopes user granted the permission to application
        if (tokens.scope.includes('https://www.googleapis.com/auth/contacts.readonly'))
        {
          // User authorized Contacts read permission.
          // Calling the APIs, etc.
          ...
        }
        else
        {
          // User didn't authorize Contacts read permission.
          // Update UX and application accordingly
          ...
        }
      }
    }
    res.end();
  }).listen(80);
}

सर्वर-आधारित ऐप्लिकेशन से Google API को ऐक्सेस करने का तरीका जानने के लिए, सर्वर-साइड वेब ऐप्लिकेशन गाइड देखें.

सिर्फ़ क्लाइंट-साइड ऐक्सेस

  • Google Identity Services का इस्तेमाल करने वाले ऐप्लिकेशन के लिए Google OAuth 2.0 के साथ इंटरैक्ट करने के लिए JavaScript लाइब्रेरी, तो आपको इसकी समीक्षा करनी चाहिए दस्तावेज़ ज़रूरी अनुमतियों को मैनेज करने के बारे में ज़्यादा जानें.
  • JavaScript का इस्तेमाल करके, Google OAuth 2.0 की पुष्टि करने की प्रक्रिया को सीधे तौर पर कॉल करने वाले ऐप्लिकेशन तो आपको इसकी समीक्षा करनी चाहिए दस्तावेज़ ज़रूरी अनुमतियों को मैनेज करने के बारे में ज़्यादा जानें.

विस्तृत अनुमतियां प्रबंधित करने के लिए अपने अपडेट किए गए ऐप्लिकेशन का परीक्षण करें

  1. उन सभी मामलों के बारे में बताएं जिनमें उपयोगकर्ता, अनुमति के अनुरोधों का जवाब दे सकते हैं. साथ ही, यह भी बताएं कि आपके ऐप्लिकेशन का व्यवहार कैसा होना चाहिए. उदाहरण के लिए, अगर उपयोगकर्ता सिर्फ़ दो अनुरोध किए गए तीन दायरों में से, आपके ऐप्लिकेशन को उसके हिसाब से काम करना चाहिए.
  2. बेहतर अनुमति वाले विकल्प के साथ अपने ऐप्लिकेशन की जांच करें. इसे चालू करने के दो तरीके हैं विस्तृत अनुमतियां:
    1. अपने ऐप्लिकेशन की ऐसी स्क्रीन देखें जिनमें OAuth 2.0 के लिए सहमति दी जाती है आपके लिए जानकारी वाली अनुमतियां पहले से ही चालू हैं का इस्तेमाल करें. टेस्टिंग के लिए, Google Cloud Console की मदद से नया वेब, Android या iOS Google OAuth 2.0 क्लाइंट आईडी भी बनाया जा सकता है. ऐसा इसलिए, क्योंकि उनके लिए ज़्यादा जानकारी वाली अनुमति हमेशा चालू रहती है.
    2. पैरामीटर सेट करना Google OAuth पर कॉल करते समय true के लिए enable_granular_consent ऑथराइज़ेशन एंडपॉइंट. कुछ SDK टूल, इस सुविधा का साफ़ तौर पर समर्थन करते हैं पैरामीटर. अन्य लोगों के लिए, दस्तावेज़ देखें और जानें कि इस पैरामीटर और उसकी वैल्यू को मैन्युअल तरीके से कैसे जोड़ा जा सकता है. अगर आपके लागू किए गए तरीके में पैरामीटर जोड़ने की सुविधा काम नहीं करती है, तो सिर्फ़ टेस्टिंग के लिए, Google Cloud Console की मदद से नया वेब, Android या iOS Google OAuth 2.0 क्लाइंट आईडी बनाया जा सकता है. इस बारे में ऊपर बताया गया है.
  3. अपडेट किए गए ऐप्लिकेशन की जांच करते समय, Google खाते (@gmail.com) के बजाय किसी निजी Google खाते का इस्तेमाल करें Workspace खाता होना चाहिए. ऐसा इसलिए है, क्योंकि Workspace Enterprise के ऐसे ऐप्लिकेशन पूरे डोमेन के लोगों को अधिकार देना या इस तौर पर मार्क किया गया भरोसेमंद फ़िलहाल, अनुमतियों में किए गए बदलावों का असर नहीं पड़ता है. इसलिए, Workspace का इस्तेमाल करके टेस्ट करना आपके संगठन के खाते से, ऐसा हो सकता है कि सहमति वाली नई स्क्रीन ठीक तरह से न दिखे.