Ayrıntılı izinleri yönetme

Genel Bakış

Ayrıntılı izinler sayesinde tüketiciler, hangi hesap verileri üzerinde daha ayrıntılı bir kontrole sahip olur? her uygulamayla paylaşmayı seçer. Hem kullanıcılara hem de geliştiricilere, kontrol, şeffaflık ve güvenlik. Bu kılavuz, Google Ads'in sizin için uygulamalarınızı ayrıntılı izinleri işleyecek şekilde başarıyla güncellemenize yardımcı olacak değişiklikleri ve adımları içerir.

Ayrıntılı izin nedir?

Hem e-posta hem de takvim kapsamı isteyen bir verimlilik uygulaması geliştirdiğinizi düşünün. Kullanıcılarınız uygulamanızı yalnızca Google Takvim için kullanmak istiyor, Gmail için kullanmak istemeyebilir. Ayrıntılı OAuth ile izni olduğunda, kullanıcılar yalnızca Google Takvim'e izin vermeyi (Gmail'e değil) yalnızca Google Takvim'e izin vermeyi seçebilir. Kullanıcıların belirli verilere erişim izni vermelerini sağlayarak verilerin açığa çıkma oranını en aza indirir. dijital yaşamları üzerinde gizlilik öncelikli kontrol sahibi olmalarını sağlıyor. Bu nedenle, uygulamanızı bu senaryoların üstesinden gelecek şekilde tasarlar.

Birden fazla Oturum Açma dışı kapsam istendiğinde

Oturum açma ve oturum açma kapsamları

Hem oturum açma hem de oturum açma dışı kapsamlar isteyen uygulamalarda kullanıcılar ilk olarak Oturum açma kapsamları (email, profile ve openid) için izin sayfasını görür. Kullanıcılar temel kimlik bilgilerini (ad, e-posta adresi ve profil fotoğrafı) paylaşmayı kabul ettikten sonra, oturum açma dışı kapsamlar için ayrıntılı izin verme ekranını görür. Bu durumda, uygulama kullanıcıların hangi kapsamlara izin verdiğini kontrol etmelidir ve kullanıcıların istenen tüm kapsamları sağladığını kapsamları. Aşağıdaki örnekte web uygulaması, üç Oturum Açma kapsamının yanı sıra bir Google Drive oturum açma dışı kapsam. Kullanıcılar Oturum Açma kapsamlarını kabul ettikten sonra Google Drive izni için ayrıntılı izin ekranı:

Oturum açma ve Oturum Açma olmayan kapsamlar

Birden fazla Oturum Açma dışı kapsam

Uygulamalar daha fazla izin istediğinde kullanıcılara ayrıntılı bir izin ekranı gösterilecek birden fazla oturum açma kapsamından yararlanamazsınız. Kullanıcılar, paylaşmayı onaylamak istedikleri izinleri seçebilir göstermeniz gerekir. Aşağıda, örnek bir ayrıntılı izin ekranı gösterilmektedir. kullanıcının Gmail iletilerine ve Google Takvim verilerine erişim:

Oturum açma kapsamı dışında birden fazla kapsam

Yalnızca Oturum Açma" isteğinde bulunan uygulamalar için kapsamlarının (email, profile ve openid) izinler onay ekranı geçerli değil. Kullanıcılar oturum açma işlemini onaylar veya reddeder isteği gönderin. Diğer bir deyişle, uygulamalar yalnızca Oturum Açma kapsamları (bir, iki veya tümü) istiyorsa üçüncü taraf olduğunda ayrıntılı izin ekranı geçerli olmaz.

Yalnızca bir oturum açma dışı kapsam isteyen uygulamalar için ayrıntılı izin ekranı geçerli değildir. Diğer bir deyişle, kullanıcılar İsteğin tamamını reddeder ve izin ekranında onay kutusu görünmez. Aşağıdaki tablo , ayrıntılı izin ekranı görüntülendiğinde özetlenir.

Oturum Açma kapsamlarının sayısı Oturum Açmayan kapsamların sayısı Ayrıntılı izinler izin ekranı
1-3 0 Geçerli değil
1-3 1+ Geçerli
0 1 Geçerli değil
0 2+ Geçerli

Uygulamalarınızın etkilenip etkilenmediğini belirleyin

Başvurunuzun aşağıdaki kriterlere uygun olduğu tüm bölümleri Google OAuth 2.0 yetkilendirme uç noktaları izin istekleri için kullanılır. Organizasyondaki Ayrıntılı izin ekranlarını etkinleştirdiklerinde birden fazla kapsam isteyenler her şeyi kapsıyor. Bu gibi durumlarda, kodunuzun yalnızca kullanıcıların bazı kapsamları yetkilendirebilirsiniz.

Uygulamanızın birden fazla kapsam kullanıp kullanmadığını belirleme

Uygulama kodunuzu inceleyin veya giden ağ çağrısı yaparak Google'ın OAuth 2.0 Uygulamanızın gönderdiği yetkilendirme istekleri, ayrıntılı izin kullanıcı rızası ekranına neden olur. gösterilecek.

Uygulama kodunuzu inceleyin

Uygulama kodunuzun Google OAuth'a çağrı yaptığınız bölümlerini gözden geçirin. yetkilendirme uç noktalarını kullanır. Google API'sinden birini kullanıyorsanız yardımcı olur. İstemcide uygulamanızın istediği kapsamları genellikle ilk kullanıma hazırlama adımlarına göz atın. Bazı örnekler aşağıdaki bölümde verilmiştir. Uygulamanızın etkilenip etkilenmediğini belirlemek için uygulamanızın Google OAuth 2.0'ı işlemek için kullandığı SDK'ların belgelerine göz atmalı ve aşağıdaki örneklerde gösterilen yönergeleri referans olarak kullanmanız gerekir.

Google Kimlik Hizmetleri

Aşağıdaki Google Kimlik Hizmetleri JavaScript kitaplığı kod snippet'i, TokenClient öğesini birden çok değerle başlatır oturum açma dışı kapsamları belirler. Ayrıntılı izin rıza ekranı, web uygulaması kullanıcılardan yetkilendirme istediğinde gösterilir.

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

Aşağıdaki kod snippet'inde, yetkilendirme isteğini oluşturmak için google-auth-oauthlib.flow modülü kullanılmaktadır. scope parametresi, oturum açma dışında iki kapsam içerir. Ayrıntılı izin ekranı, web sitesinde kullanıcıdan yetkilendirme ister.

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

Aşağıdaki kod snippet'i bir google.auth.OAuth2 nesnesi oluşturur. Bu nesne scope parametresi iki parametre içeren yetkilendirme isteğindeki parametreler oturum açma dışı kapsamları belirler. Ayrıntılı izin rıza ekranı, web uygulaması kullanıcılardan yetkilendirme istediğinde gösterilir.

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
});

Giden ağ çağrısını denetle

Ağ çağrılarını denetleme yöntemi, kullandığınız ağ türüne bağlı olarak uygulama istemci türü.

Ağ çağrılarını incelerken Google OAuth'a gönderilen istekleri arayın Yetkilendirme uç noktaları'nı tıklayın ve scope parametresini inceleyin.

Bu değerler, ayrıntılı izin mesajı ekranının gösterilmesine neden olur.

  • scope parametresi, Oturum Açma kapsamları ve Oturum Açma olmayan kapsamları içerir.

    Aşağıdaki örnek istek, üç Oturum Açma kapsamını ve Oturum Açma olmayan bir kapsamı içerir. kullanıcının Google Drive dosyalarının meta verilerini görüntülemek için:

    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 parametresi birden fazla Oturum Açma dışı kapsam içeriyor.

    Aşağıdaki örnek istek, kullanıcının Google Drive'ını görüntülemek için iki Oturum Açma dışı kapsam içeriyor meta verileri kullanabilir ve belirli Google Drive dosyalarını yönetebilirsiniz:

  • 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

Ayrıntılı izinlerin yönetimiyle ilgili en iyi uygulamalar

Uygulamanızın, kullanıma sunulması için güncellenmesi gerektiğine karar verirseniz izni düzgün şekilde işlemek için kodunuzda gerekli güncellemeleri yapmanız kullanabilirsiniz. Tüm başvurular, aşağıdaki en iyi uygulamalara uygun olmalıdır:

  1. Google API Hizmetleri: Kullanıcı Verileri Politikası'nı inceleyin ve politikalara uyduğunuzdan emin olun.
  2. Görev için gereken belirli kapsamları isteyin. Siz Google OAuth 2.0 politikasına uygun olmalıdır: yalnızca istediğiniz kapsamları gerekir. Birden fazla kapsamları (uygulamanızın temel işlevi için gerekli olmadığı sürece). Paket birkaç kapsamı bir arada kullanmak, özellikle de ilk kez kullananlar için bu nedenle, birçok farklı uygulamaya yönelik ihtiyaçları izin verir. Bu durum, alarmları yükseltebilir ve kullanıcıların cihazınızla daha fazla etkileşimde bulunmasını engelleyebilir bir uygulamadır.
  3. Kullanıcılara sormadan önce gerekçeyi sağlayın. isteği gönderin. Uygulamanızın istenen izne neden ihtiyaç duyduğunu net bir şekilde açıklayın. Kullanıcının verileriyle ne yapacağınız ve kullanıcının, isteği onaylamaktan nasıl yararlanacağı. Araştırmamız, bu açıklamaların kullanıcı güvenini ve etkileşimini artırdığını gösteriyor.
  4. Kullanım ek yetkilendirme birden fazla erişim jetonunu yönetmek zorunda kalmamak için uygulamanız kapsamları her istediğinde
  5. Kullanıcıların hangi kapsamlara izin verdiğini kontrol edin. Birden fazla kapsamları aynı anda vermezseniz kullanıcılar uygulamanızın istediği tüm kapsamları vermeyebilir. Uygulamanız daima Kullanıcının hangi kapsamlara izin verdiğini kontrol etmek ve tüm kapsamların reddedilmesini sağlamak için ilgili özellikleri. Şu Google OAuth 2.0 politikalarına uyun: birden fazla kullanıcı için izin işleme kapsamları açıkça belirttikten sonra kullanıcıdan tekrar izin kapsamı gerektiren belirli bir özelliği kullanma niyeti

Ayrıntılı izinleri işleyecek şekilde uygulamanızı güncelleyin

Android uygulamaları

Google OAuth 2.0 ve şuna göre ayrıntılı izinleri işleyecek şekilde uygulamanızı güncelleyin: en iyi uygulamalara göz atın.

Şunu kullanıyorsanız: auth.api.signin Google OAuth 2.0 ile etkileşimde bulunmak için kullanabileceğiniz, Play Hizmetleri'nden requestPermissions ihtiyaçlı en küçük kapsamları talep eden işlev ve hasPermissions işlevini kontrol etmek için kullanıcının hangi kapsamları sağladığını ayrıntılı izinler isteyin.

Chrome uzantı uygulamaları

Hangi tür stratejilerin Chrome Google OAuth 2.0 ile çalışması için Identity API'yi en iyi uygulamalara göz atın.

Aşağıdaki örnekte, ayrıntılı izinlerin doğru şekilde nasıl yönetileceği gösterilmektedir.

manifest.json

Örnek manifest dosyası, Chrome uzantısı için iki oturum açma dışı kapsam bildirir bir uygulamadır.

{
  "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"]
  }
}

Yanlış Yaklaşım

Hepsi veya hiçbiri

Kullanıcılar, yetkilendirme işlemini başlatmak için düğmeyi tıklar. Kod snippet'inde, kullanıcılara manifest.json dosyasında belirtilen iki kapsam için "tüm veya hiçbiri" izin ekranı gösterildiği varsayılır. Kullanıcıların hangi kapsamlara izin verdiğini kontrol etmeyi ihmal eder.

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.
            ...
          }
      });
});

Doğru Yaklaşım

En küçük kapsamlar

Gereken en küçük kapsam grubunu seçin

Uygulama yalnızca gereken en küçük kapsam grubunu istemelidir. Bu işlem önerilir uygulamanızın bir görevi tamamlamak için her seferinde tek bir kapsam talep etmesini sağlayın.

Bu örnekte, manifest.json dosyasında tanımlanan her iki kapsamın da gereken en küçük kapsam grubu olduğu varsayılmaktadır. oauth.js dosyası Chrome kullanıyor Google ile yetkilendirme sürecini başlatmak için Identity API. Şunu etkinleştirmeniz gerekir: ayrıntılı izinler sağlar böylece kullanıcılar uygulamanıza izin verirken daha fazla kontrole sahip olur bir uygulamadır. Uygulamanız, kullanıcıların hangi kapsamları yetkilendirdiğini kontrol ederek kullanıcılardan gelen yanıtı doğru şekilde işlemelidir.

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 ve macOS uygulamaları

Google OAuth 2.0 ve şuna göre ayrıntılı izinleri işleyecek şekilde uygulamanızı güncelleyin: en iyi uygulamalara göz atın.

iOS ve macOS için Google ile Oturum Açma kitaplığını kullanıyorsanız Google OAuth 2.0 ile etkileşimde bulunmak istiyorsanız, ayrıntılı işlemeye ilişkin belgeler izin verir.

Web uygulamaları

Google OAuth 2.0 ve şuna göre ayrıntılı izinleri işleyecek şekilde uygulamanızı güncelleyin: en iyi uygulamalara göz atın.

Sunucu tarafı (çevrimdışı) erişim

Sunucu tarafı (çevrimdışı) erişim modu için şunları yapmanız gerekir:
  • Sunucuyu hazırlayın ve yetkilendirmeyi almak için herkesin erişebileceği bir uç nokta tanımlayın girin.
  • Şunu yapılandır: genel uç noktanızın URI'sını Google Cloud Console'da kullanılabilir.

Aşağıdaki kod snippet'i, bir NodeJS örneğinin iki Oturum Açma olmayan kapsam isteğinde bulunduğunu gösterir. Kullanıcılar daha ayrıntılı izin ekranını göreceksiniz.

Yanlış Yaklaşım

Hepsi veya hiçbiri

Kullanıcılar yetkilendirme URL'sine yönlendirilir. Kod snippet'i, kullanıcıların arama sorgusuna "ya hep ya hiç" kullanılan bir buradaki iki kapsam için izin ekranı scopes aralığı. Kullanıcıların hangi kapsamlara izin verdiğini kontrol etmeyi ihmal eder.

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);
}
Doğru Yaklaşım

En küçük kapsam

Gerekli olan en küçük kapsam grubunu seçin

Uygulama yalnızca gereken en küçük kapsam grubunu istemelidir. Bu işlem önerilir uygulamanızın bir görevi tamamlamak için her seferinde tek bir kapsam talep etmesini sağlayın. Uygulamanız kapsam isteğinde bulunduğunda, ek yetkilendirme Böylece birden fazla erişim jetonunu yönetmek zorunda kalmazsınız.

Uygulamanızın birden fazla Oturum Açma dışı kapsam istemesi gerekiyorsa her zaman ek yetkilendirme ve kullanıcıların hangi kapsamlara izin verdiğini kontrol edin.

Bu örnekte, uygulamanın kullanılabilmesi için her iki kapsamın da düzgün şekilde çalışmasını sağlama. Şunu etkinleştirmeniz gerekir: ayrıntılı izinler sağlar böylece kullanıcılar uygulamanıza izin verirken daha fazla kontrole sahip olur bir uygulamadır. Uygulamanız, izin verildiğini görebilirsiniz.

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);
}

Şu göz atın: sunucu tabanlı uygulamalardan Google API'lerine nasıl erişileceğine ilişkin sunucu tarafı web uygulaması rehberini inceleyin.

Yalnızca istemci tarafı erişimi

  • Google Kimlik Hizmetleri'ni kullanan uygulamalar için Google OAuth 2.0 ile etkileşimde bulunmak için JavaScript kitaplığına ihtiyacınız varsa bu makaleyi gözden geçirmeniz gerekir. belgeler ayrıntılı izni alabilirsiniz.
  • Google OAuth 2.0 yetkilendirmesine JavaScript kullanarak doğrudan çağrı yapan uygulamalar için bu adımları uygulamanız ve belgeler ayrıntılı izni alabilirsiniz.

Güncellenen uygulamanızı ayrıntılı izinleri işleme konusunda test etme

  1. Kullanıcıların izin isteklerine yanıt verebileceği tüm durumları Outline ve beklenen davranış biçimi olabilir. Örneğin, kullanıcı yalnızca talep edilen üç kapsamdan birini seçerseniz uygulamanız buna göre davranacaktır.
  2. Ayrıntılı izni etkinleştirerek uygulamanızı test edin. Ayrıntılı izinleri etkinleştirmenin iki yolu vardır:
    1. Uygulamanızın OAuth 2.0 izin ekranlarını kontrol ederek ayrıntılı izinler bir uygulamadır. Dilerseniz yeni bir web, Android veya iOS Google OAuth 2.0 istemci kimliği de oluşturabilirsiniz. Google Cloud Console aracılığıyla test edebilirsiniz. Ayrıntılı izinler ve etkinleştirebilirsiniz.
    2. Parametreyi ayarlama Google OAuth çağrılırken enable_granular_consent - true yetkilendirme uç noktalarını kullanın. Bazı SDK'lar bunun için açık destek sunar parametresinden sonra bir değer girin. Diğerleri için bu parametreyi ve değerini manuel olarak nasıl ekleyeceğinizi görmek üzere dokümanları inceleyin. Uygulamanız parametrenin eklenmesini desteklemiyorsa yeni bir web sayfası oluşturabilirsiniz. Test için Google Cloud konsolu üzerinden Android veya iOS Google OAuth 2.0 istemci kimliği yalnızca önceki maddede belirtilen amaçlarla kullanamazsınız.
  3. Güncellenen uygulamanızı test ederken Google Hesabı yerine kişisel bir Google Hesabı (@gmail.com) kullanın Workspace hesabı. Bunun nedeni, alan genelinde yetki devri olan veya Güvenilir olarak işaretlenmiş Workspace Enterprise uygulamalarının şu anda ayrıntılı izinlerdeki değişikliklerden etkilenmemesidir. Dolayısıyla, bir Workspace ile hesabınızdaki yeni ayrıntılı izin ekranı, istenen şekilde gösterilmeyebilir.