Web uygulamalarına genel bakış

Google Seçici iletişim kutusu.

Google Picker API, kullanıcıların Google Drive dosyalarını seçmesine veya yüklemesine izin vermek için web uygulamalarınızda kullanabileceğiniz bir JavaScript API'dir. Kullanıcılar, uygulamalarınıza Drive verilerine erişme izni vererek dosyalarıyla güvenli ve yetkili bir şekilde etkileşim kurabilir.

Google Seçici, Drive'da depolanan bilgiler için "Dosya Aç" iletişim kutusu görevi görür ve çeşitli özelliklere sahiptir:

  • Google Drive kullanıcı arayüzüne benzer bir görünüm ve tarz.
  • Drive dosyalarının önizlemelerini ve küçük resimlerini gösteren çeşitli görünümler.
  • Satır içi bir modal pencere olduğundan kullanıcılar ana uygulamadan hiç ayrılmaz.

Google Seçici'nin, kullanıcıların dosyaları bir klasörden diğerine düzenlemesine, taşımasına veya kopyalamasına izin vermediğini unutmayın. Dosyaları yönetmek için Google Drive API'yi veya Drive kullanıcı arayüzünü kullanmanız gerekir.

Ön koşullar

Google Seçici'yi kullanan uygulamalar, mevcut tüm Hizmet Şartları'na uymalıdır. En önemlisi, isteklerinizde kendinizi doğru şekilde tanımlamanız gerekir.

Ayrıca bir Google Cloud projeniz olmalıdır.

Ortamınızı ayarlama

Google Picker API'yi kullanmaya başlamak için ortamınızı ayarlamanız gerekir.

API'yi etkinleştirme

Google API'lerini kullanmadan önce bir Google Cloud projesinde etkinleştirmeniz gerekir. Tek bir Google Cloud projesinde bir veya daha fazla API'yi etkinleştirebilirsiniz.

API anahtarı oluşturma

API anahtarı, büyük ve küçük harfler, sayılar, alt çizgiler ve kısa çizgiler içeren uzun bir dizedir (ör. AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe). Bu kimlik doğrulama yöntemi, "İnternette bu bağlantıya sahip olan herkes" paylaşım ayarı kullanılarak paylaşılan Google Workspace dosyaları gibi herkese açık veriye anonim olarak erişmek için kullanılır. Daha fazla bilgi için API anahtarlarını yönetme başlıklı makaleyi inceleyin.

API anahtarı oluşturmak için:

  1. Google Cloud Console'da Menü > API'ler ve Hizmetler > Kimlik Bilgileri'ne gidin.

    Kimlik Bilgileri'ne gidin.

  2. Kimlik bilgileri oluştur > API anahtarı'nı tıklayın.
  3. Yeni API anahtarınız gösterilir.
    • Uygulamanızın kodunda kullanmak üzere API anahtarınızı kopyalamak için Kopyala'yı tıklayın. API anahtarını, projenizin kimlik bilgilerinin "API Anahtarları" bölümünde de bulabilirsiniz.
    • Yetkisiz kullanımı önlemek için API anahtarının nerede ve hangi API'ler için kullanılabileceğini kısıtlamanızı öneririz. Daha fazla bilgi için API kısıtlamaları ekleme başlıklı makaleyi inceleyin.

Web uygulaması için kimlik bilgilerini yetkilendirme

Uygulamanızda son kullanıcıların kimliğini doğrulamak ve kullanıcı verilerine erişmek için bir veya daha fazla OAuth 2.0 istemci kimliği oluşturmanız gerekir. İstemci kimliği, tek bir uygulamanın Google OAuth sunucularına tanıtılması için kullanılır. Uygulamanız birden fazla platformda çalışıyorsa her platform için ayrı bir istemci kimliği oluşturmanız gerekir.
  • Google Cloud Console'da Menü > > İstemciler'e gidin.

    Müşteriler'e gidin.

  • Create Client'ı (İstemci Oluştur) tıklayın.
  • Uygulama türü > Web uygulaması'nı tıklayın.
  • Ad alanına, kimliğin adını yazın. Bu ad yalnızca Google Cloud Console'da gösterilir.
  • Uygulamanızla ilgili yetkilendirilmiş URI'leri ekleyin:
    • İstemci tarafı uygulamaları (JavaScript): Yetkilendirilmiş JavaScript kaynakları bölümünde URI ekle'yi tıklayın. Ardından, tarayıcı isteklerinde kullanılacak bir URI girin. Bu, uygulamanızın OAuth 2.0 sunucusuna API istekleri gönderebileceği alanları tanımlar.
    • Sunucu tarafı uygulamaları (Java, Python vb.): Yetkilendirilmiş yönlendirme URI'leri bölümünde URI ekle'yi tıklayın. Ardından, OAuth 2.0 sunucusunun yanıt gönderebileceği bir uç nokta URI'si girin.
  • Oluştur'u tıklayın.

    Yeni oluşturulan kimlik bilgisi OAuth 2.0 istemci kimlikleri altında görünür.

    İstemci kimliğini not edin. İstemci gizli anahtarları web uygulamaları için kullanılmaz.

  • Önemli: Uygulamanız, Picker nesnesi oluştururken özel kullanıcı verilerine erişen görünümlerle birlikte bir OAuth 2.0 erişim jetonu göndermelidir. Erişim jetonu istemek için Google API'lerine Erişmek İçin OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.

    Google Seçici'yi yönetme

    Bu kılavuzun geri kalanında, Google Seçici'nin bir web uygulamasından nasıl yükleneceği ve görüntüleneceği ile geri çağırma işlevinin nasıl uygulanacağı açıklanmaktadır. Tam örneği görüntülemek için Web uygulamaları için kod örneği başlıklı makaleye bakın.

    Google Picker kitaplığını yükleme

    Google Picker kitaplığını yüklemek için kitaplık adıyla ve başarılı bir yüklemeden sonra çağrılacak bir geri çağırma işleviyle gapi.load işlevini çağırın:

        <script>
          let tokenClient;
          let accessToken = null;
          let pickerInited = false;
          let gisInited = false;
    
          // Use the API Loader script to load google.picker.
          function onApiLoad() {
            gapi.load('picker', onPickerApiLoad);
          }
    
          function onPickerApiLoad() {
            pickerInited = true;
          }
    
          function gisLoaded() {
            // Replace with your client ID and required scopes.
            tokenClient = google.accounts.oauth2.initTokenClient({
              client_id: 'CLIENT_ID',
              scope: 'SCOPES',
              callback: '', // defined later
            });
            gisInited = true;
        }
        </script>
        <!-- Load the Google API Loader script. -->
        <script async defer src="https://apis.google.com/js/api.js" onload="onApiLoad()"></script>
        <script async defer src="https://accounts.google.com/gsi/client" onload="gisLoaded()"></script>
    

    Aşağıdakini değiştirin:

    • CLIENT_ID: Web uygulamanızın istemci kimliği.
    • SCOPES: İhtiyacınız olan erişim düzeyine bağlı olarak Google API'lerine erişmek için istemeniz gereken bir veya daha fazla OAuth 2.0 kapsamı. Daha fazla bilgi için Google API'leri için OAuth 2.0 Kapsamları başlıklı makaleyi inceleyin.

    google.accounts.oauth2 JavaScript kitaplığı, kullanıcı izni istemenize ve kullanıcı verileriyle çalışmak için erişim jetonu almanıza yardımcı olur. initTokenClient yöntemi, web uygulamanızın istemci kimliğiyle yeni bir jeton istemcisi başlatır. Daha fazla bilgi için Jeton modelini kullanma başlıklı makaleyi inceleyin.

    onApiLoad işlevi, Google Seçici kitaplıklarını yükler. onPickerApiLoad geri çağırma işlevi, Google Picker kitaplığı başarıyla yüklendikten sonra çağrılır.

    Not: TypeScript kullanıyorsanız window.google.picker kullanmak için @types/google.picker yükleyebilirsiniz. Bu türlerle ilgili bir sorunu bildirmek için destek kaydı açın.

    Google Seçici'yi görüntüleme

    createPicker işlevi, Google Picker API'nin yüklenmesinin tamamlanmasını ve bir OAuth 2.0 jetonunun oluşturulmasını sağlar. Uygulamanın kullanıcının dosyalarına erişmesine izin vermek için Cloud proje numarasını kullanarak Drive uygulama kimliğini ayarlamak üzere PickerBuilder.setAppId yöntemini kullanın. Bu işlev daha sonra Google Picker'ın bir örneğini oluşturur ve görüntüler:

        // Create and render a Google Picker object for selecting from Drive.
        function createPicker() {
          const showPicker = () => {
            // Replace with your API key and App ID.
            const picker = new google.picker.PickerBuilder()
                .addView(google.picker.ViewId.DOCS)
                .setOAuthToken(accessToken)
                .setDeveloperKey('API_KEY')
                .setCallback(pickerCallback)
                .setAppId('APP_ID')
                .build();
            picker.setVisible(true);
          }
    
          // Request an access token.
          tokenClient.callback = async (response) => {
            if (response.error !== undefined) {
              throw (response);
            }
            accessToken = response.access_token;
            showPicker();
          };
    
          if (accessToken === null) {
            // Prompt the user to select a Google Account and ask for consent to share their data
            // when establishing a new session.
            tokenClient.requestAccessToken({prompt: 'consent'});
          } else {
            // Skip display of account chooser and consent dialog for an existing session.
            tokenClient.requestAccessToken({prompt: ''});
          }
        }
    

    Aşağıdakini değiştirin:

    • API_KEY: API anahtarınız.
    • APP_ID: Cloud proje numaranız.

    Google Picker örneği oluşturmak için PickerBuilder kullanarak bir Picker nesnesi oluşturmanız gerekir. PickerBuilder, View, OAuth 2.0 jetonu, geliştirici anahtarı ve başarı durumunda çağrılacak bir geri çağırma işlevi (pickerCallback) alır.

    Picker nesnesi, her seferinde bir View oluşturur. ViewId (google.picker.ViewId.*) ile veya görünümün nasıl oluşturulacağı üzerinde daha fazla kontrol sahibi olmak için DocsView örneği oluşturarak en az bir görünüm belirtin.

    Google Seçici'ye birden fazla görünüm eklenirse kullanıcılar soldaki sekmeyi tıklayarak bir görünümden diğerine geçebilir. Sekmeler, ViewGroup nesneleriyle mantıksal olarak gruplandırılabilir.

    Geçerli görünümlerin listesi için Google Picker referansındaki ViewId bölümüne bakın. Bu görünümlerden herhangi birinin jetonunu almak için https://www.googleapis.com/auth/drive.file kapsamını kullanın.

    Google seçici geri çağırmasını uygulama

    Google Picker'da dosya seçme veya İptal'e basma gibi kullanıcı etkileşimlerine yanıt vermek için Google Picker geri çağırması kullanılabilir. ResponseObject arayüzü, kullanıcının seçimleriyle ilgili bilgileri aktarır.

        // A callback implementation.
        function pickerCallback(data) {
          let url = 'nothing';
          if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
            const doc = data[google.picker.Response.DOCUMENTS][0];
            url = doc[google.picker.Document.URL];
          }
          const message = `You picked: ${url}`;
          document.getElementById('result').textContent = message;
        }
    

    Geri çağırma, JSON kodlu bir veri nesnesi alır. Bu nesne, kullanıcının Google Seçici (google.picker.Response.ACTION) ile gerçekleştirdiği bir Action içerir. Kullanıcı bir öğe seçerse google.picker.Response.DOCUMENTS dizisi de doldurulur. Bu örnekte, google.picker.Document.URL ana sayfada gösterilmektedir. Veri alanlarıyla ilgili ayrıntılar için ResponseObject arayüzüne bakın.

    Belirli dosya türlerini filtreleme

    Belirli öğeleri filtrelemek için ViewGroup kullanın. Aşağıdaki kod örneğinde, "Drive" alt görünümünde yalnızca dokümanların ve sunuların nasıl gösterildiği açıklanmaktadır.

        const picker = new google.picker.PickerBuilder()
            .addViewGroup(
              new google.picker.ViewGroup(google.picker.ViewId.DOCS)
                  .addView(google.picker.ViewId.DOCUMENTS)
                  .addView(google.picker.ViewId.PRESENTATIONS))
            .setOAuthToken(oauthToken)
            .setDeveloperKey(developerKey)
            .setAppId(cloudProjectNumber)
            .setCallback(pickerCallback)
            .build();
    

    Geçerli görünüm türlerinin listesi için ViewId başlıklı makaleye bakın.

    Google Seçici'nin görünümünü ayarlama

    Çeşitli görünümlerde özellikleri etkinleştirmek veya devre dışı bırakmak için Feature nesnesini kullanabilirsiniz. Google Seçici penceresinin görünümünü hassas bir şekilde ayarlamak için PickerBuilder.enableFeature veya PickerBuilder.disableFeature yöntemini kullanın. Örneğin, yalnızca tek bir görünümünüz varsa kullanıcıların öğeleri görmesi için daha fazla alan sağlamak amacıyla gezinme bölmesini (Feature.NAV_HIDDEN) gizleyebilirsiniz.

    Aşağıdaki kod örneğinde, bu özelliğin kullanıldığı bir e-tablonun arama seçicisi örneği gösterilmektedir:

        const picker = new google.picker.PickerBuilder()
            .addView(google.picker.ViewId.SPREADSHEETS)
            .enableFeature(google.picker.Feature.NAV_HIDDEN)
            .setDeveloperKey(developerKey)
            .setCallback(pickerCallback)
            .build();