Drive kullanıcı arayüzünün "Birlikte aç" içerik menüsüyle entegre etme

Bir kullanıcı bir dosya seçip Drive kullanıcı arayüzünün "Birlikte aç" menü öğesini tıkladığında Drive, kullanıcıyı ilgili uygulamanın Drive kullanıcı arayüzü entegrasyonu yapılandırma bölümünde tanımlanan Aç URL'sine yönlendirir.

Drive kullanıcı arayüzü entegrasyonunu yapılandırırken "İçe aktarma" kutusunu işaretlediyseniz kullanıcı, açmak için uygulamaya özel dosyalar ile Google Workspace dosyalarının bir kombinasyonunu seçebilir. Drive kullanıcı arayüzü entegrasyonunu yapılandırdığınızda, uygulamaya özel dosyalar "Varsayılan MIME türleri" ve "Varsayılan dosya uzantıları" alanlarında tanımlanır. Google Workspace dosyaları ise "İkincil MIME türleri" ve "İkincil dosya uzantıları" alanlarında tanımlanır.

Drive, kullanıcının açmak istediği her dosya için MIME türlerini, tanımladığınız varsayılan ve ikincil MIME türlerinizle karşılaştırarak kontrol eder:

  • "Varsayılan MIME türleri" alanında tanımlanan MIME türleri için dosya kimliği uygulamanıza iletilir. Uygulamaya özel dosyaların nasıl işleneceği hakkında bilgi edinmek için Uygulamaya özel dokümanlar için Açık URL işleme bölümüne bakın.

  • "İkincil MIME türleri" alanında tanımlanan MIME türleri için Drive kullanıcı arayüzünde, kullanıcıya Google Workspace dosyasının hangi dosya türüne dönüştürüleceğini soran bir iletişim kutusu görüntülenir. Örneğin, Drive kullanıcı arayüzünde bir Google Dokümanlar dosyası seçerseniz ve "İkincil MIME türleri" alanı uygulamanızın text/düz veya app/pdf"yi desteklediğini gösteriyorsa Drive kullanıcı arayüzü, kullanıcıya Düz Metin veya PDF'ye dönüştürmek isteyip istemediğini sorar.

    Google Workspace dosyalarının nasıl işleneceği hakkında bilgi için Google Workspace dokümanları için açık URL'leri işleme başlıklı makaleye bakın. Google Workspace dokümanlarının ve MIME türü dönüşüm biçimlerinin listesini Google Workspace dokümanları için MIME türlerini dışa aktarma başlıklı makalede bulabilirsiniz.

Uygulamaya özel dokümanlar için bir Açık URL işleme

Drive kullanıcı arayüzü entegrasyonunu yapılandırma bölümünde belirtildiği gibi, uygulamanız dosyayı açmasıyla ilgili bilgileri içeren şablon değişkenleri alır. Uygulamanız, bir state parametresi içinde varsayılan bir şablon değişkenleri grubunu alır. Uygulamaya özel bir Open URL için varsayılan state bilgileri şu şekildedir:

{
  "ids": ["ID"],
  "resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
  "action":"open",
  "userId":"USER_ID"
}

Bu çıkış aşağıdaki değerleri içerir:

  • ID: Üst klasörün kimliği.
  • RESOURCE_KEYS: İlgili kaynak anahtarlarıyla eşlenen dosya kimliklerinin JSON sözlüğü.
  • open: Gerçekleştirilmekte olan işlem. Açık URL kullanılırken değer open'dir.
  • USER_ID: Kullanıcıyı benzersiz şekilde tanımlayan profil kimliği.

Uygulamanızın bu istek üzerine aşağıdaki adımları uygulayarak işlem yapması gerekir:

  1. action alanının open değerinin olduğunu ve ids alanının mevcut olduğunu doğrulayın.
  2. Kullanıcı için yeni bir oturum oluşturmak amacıyla userId değerini kullanın. Oturum açmış kullanıcılar hakkında daha fazla bilgi edinmek için Kullanıcılar ve yeni etkinlikler başlıklı makaleye göz atın.
  3. ID değerlerini kullanarak izinleri kontrol etmek, dosya meta verilerini getirmek ve dosya içeriğini indirmek için files.get yöntemini kullanın.
  4. İstekte resourceKeys ayarlandıysa X-Goog-Drive-Resource-Keys istek başlığını ayarlayın. Kaynak anahtarları hakkında daha fazla bilgi için Kaynak anahtarları kullanarak bağlantıyla paylaşılan dosyalara erişme bölümüne bakın.

state parametresi URL kodlamalı olduğundan, uygulamanız çıkış karakterlerini işlemeli ve bunu JSON olarak ayrıştırmalıdır.

Google Workspace dokümanları için açık URL'leri işleme

Drive kullanıcı arayüzü entegrasyonunu yapılandırma bölümünde belirtildiği gibi, uygulamanız bir state parametresi içinde bir dizi varsayılan şablon değişkeni alır. Google Workspace Açılış URL'si için varsayılan state bilgileri şu şekildedir:

{
  "exportIds": ["ID"],
  "resourceKeys":{"RESOURCE_KEYS":"RESOURCE_KEYS"},
  "action":"open",
  "userId":"USER_ID"
}

Bu çıkış aşağıdaki değerleri içerir:

  • EXPORT_ID: Dışa aktarılan dosya kimliklerinin virgülle ayrılmış listesi (yalnızca yerleşik Google dokümanlarını açarken kullanılır).
  • RESOURCE_KEYS: İlgili kaynak anahtarlarıyla eşlenen dosya kimliklerinin JSON sözlüğü.
  • open: Gerçekleştirilmekte olan işlem. Açık URL kullanılırken değer open'dir.
  • USER_ID: Kullanıcıyı tanımlayan profil kimliği.

Uygulamanızın bu istek üzerine aşağıdaki adımları uygulayarak işlem yapması gerekir:

  1. Hem state alanındaki open değerini hem de exportIds alanının varlığını algılayarak bunun dosya açma isteği olduğunu doğrulayın.

  2. İzinleri kontrol etmek, dosya meta verilerini getirmek ve EXPORT_ID değerlerini kullanarak MIME türünü belirlemek için files.get yöntemini kullanın.

  3. files.export yöntemini kullanarak dosya içeriğini dönüştürün. Aşağıdaki kod örneğinde, bir Google Workspace dokümanının istenen MIME türüne nasıl aktarılacağı gösterilmektedir.

  4. İstekte resourceKey ayarlandıysa X-Goog-Drive-Resource-Keys istek başlığını ayarlayın. Kaynak anahtarları hakkında daha fazla bilgi için Kaynak anahtarları kullanarak bağlantıyla paylaşılan dosyalara erişme bölümüne bakın.

    Java

    drive/snippets/drive_v3/src/main/java/ExportPdf.java
    import com.google.api.client.googleapis.json.GoogleJsonResponseException;
    import com.google.api.client.http.HttpRequestInitializer;
    import com.google.api.client.http.javanet.NetHttpTransport;
    import com.google.api.client.json.gson.GsonFactory;
    import com.google.api.services.drive.Drive;
    import com.google.api.services.drive.DriveScopes;
    import com.google.auth.http.HttpCredentialsAdapter;
    import com.google.auth.oauth2.GoogleCredentials;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Arrays;
    
    /* Class to demonstrate use-case of drive's export pdf. */
    public class ExportPdf {
    
      /**
       * Download a Document file in PDF format.
       *
       * @param realFileId file ID of any workspace document format file.
       * @return byte array stream if successful, {@code null} otherwise.
       * @throws IOException if service account credentials file not found.
       */
      public static ByteArrayOutputStream exportPdf(String realFileId) throws IOException {
        // Load pre-authorized user credentials from the environment.
        // TODO(developer) - See https://developers.google.com/identity for
        // guides on implementing OAuth2 for your application.
        GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
            .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
        HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
            credentials);
    
        // Build a new authorized API client service.
        Drive service = new Drive.Builder(new NetHttpTransport(),
            GsonFactory.getDefaultInstance(),
            requestInitializer)
            .setApplicationName("Drive samples")
            .build();
    
        OutputStream outputStream = new ByteArrayOutputStream();
        try {
          service.files().export(realFileId, "application/pdf")
              .executeMediaAndDownloadTo(outputStream);
    
          return (ByteArrayOutputStream) outputStream;
        } catch (GoogleJsonResponseException e) {
          // TODO(developer) - handle error appropriately
          System.err.println("Unable to export file: " + e.getDetails());
          throw e;
        }
      }
    }

    Python

    drive/snippets/drive-v3/file_snippet/dışa_aktarma_pdf.py
    from __future__ import print_function
    
    import io
    
    import google.auth
    from googleapiclient.discovery import build
    from googleapiclient.errors import HttpError
    from googleapiclient.http import MediaIoBaseDownload
    
    
    def export_pdf(real_file_id):
        """Download a Document file in PDF format.
        Args:
            real_file_id : file ID of any workspace document format file
        Returns : IO object with location
    
        Load pre-authorized user credentials from the environment.
        TODO(developer) - See https://developers.google.com/identity
        for guides on implementing OAuth2 for the application.
        """
        creds, _ = google.auth.default()
    
        try:
            # create drive api client
            service = build('drive', 'v3', credentials=creds)
    
            file_id = real_file_id
    
            # pylint: disable=maybe-no-member
            request = service.files().export_media(fileId=file_id,
                                                   mimeType='application/pdf')
            file = io.BytesIO()
            downloader = MediaIoBaseDownload(file, request)
            done = False
            while done is False:
                status, done = downloader.next_chunk()
                print(F'Download {int(status.progress() * 100)}.')
    
        except HttpError as error:
            print(F'An error occurred: {error}')
            file = None
    
        return file.getvalue()
    
    
    if __name__ == '__main__':
        export_pdf(real_file_id='1zbp8wAyuImX91Jt9mI-CAX_1TqkBLDEDcr2WeXBbKUY')

    Node.js

    drive/snippets/drive_v3/file_snippets/dışa_aktarma_pdf.js
    /**
     * Download a Document file in PDF format
     * @param{string} fileId file ID
     * @return{obj} file status
     * */
    async function exportPdf(fileId) {
      const {GoogleAuth} = require('google-auth-library');
      const {google} = require('googleapis');
    
      // Get credentials and build service
      // TODO (developer) - Use appropriate auth mechanism for your app
      const auth = new GoogleAuth({
        scopes: 'https://www.googleapis.com/auth/drive',
      });
      const service = google.drive({version: 'v3', auth});
    
      try {
        const result = await service.files.export({
          fileId: fileId,
          mimeType: 'application/pdf',
        });
        console.log(result.status);
        return result;
      } catch (err) {
        // TODO(developer) - Handle error
        throw err;
      }
    }

    2.999

    drive/snippets/drive_v3/src/DriveExportPdf.php
    use Google\Client;
    use Google\Service\Drive;
    function exportPdf()
    {
        try {
            $client = new Client();
            $client->useApplicationDefaultCredentials();
            $client->addScope(Drive::DRIVE);
            $driveService = new Drive($client);
            $realFileId = readline("Enter File Id: ");
            $fileId = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo';
            $fileId = $realFileId;
            $response = $driveService->files->export($fileId, 'application/pdf', array(
                'alt' => 'media'));
            $content = $response->getBody()->getContents();
            return $content;
    
        }  catch(Exception $e) {
             echo "Error Message: ".$e;
        }
    
    }

Dönüştürülen dosyaları salt okunur olarak görüntüleyebilir veya kullanıcının dosyayı yeni dosya türü olarak kaydetmesine olanak tanıyan bir iletişim kutusu gösterebilirsiniz.

state parametresi URL kodlamalı olduğundan, uygulamanız çıkış karakterlerini işlemeli ve bunu JSON olarak ayrıştırmalıdır.

Kullanıcılar ve yeni etkinlikler

Drive uygulamaları, tüm "Birlikte aç" etkinliklerini potansiyel oturum açma etkinlikleri olarak kabul etmelidir. Bazı kullanıcıların birden fazla hesabı olabilir. Bu nedenle, state parametresindeki kullanıcı kimliği mevcut oturumla eşleşmeyebilir. state parametresindeki kullanıcı kimliği geçerli oturumla eşleşmiyorsa uygulamanızın geçerli oturumunu sonlandırın ve istenen kullanıcı olarak oturum açın.

Uygulamalar, bir uygulamayı Google Drive kullanıcı arayüzünden açmanın yanı sıra, uygulama içindeki bir içeriği seçmek için bir dosya seçici de görüntüleyebilir. Daha fazla bilgi edinmek için Google Seçici'ye bakın.