Drive kullanıcı arayüzüyle entegrasyon& "Birlikte aç" içerik menüsü

Kullanıcı bir dosyayı seçip Drive kullanıcı arayüzünün "Birlikte aç" menü öğesini tıkladığında Drive, kullanıcıyı Drive kullanıcı arayüzü entegrasyonunu yapılandırma bölümünde tanımlanan uygulamanın 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 ve Google Workspace dosyalarının bir kombinasyonunu seçebilir. Bir Drive kullanıcı arayüzü entegrasyonu yapılandırdığınızda uygulamaya özel dosyalar "Varsayılan MIME türleri" ve "Varsayılan dosya uzantıları" alanlarında, Google Workspace dosyaları ise "İkincil MIME türleri" ve "İkincil dosya uzantıları" alanlarında tanımlanır.

Kullanıcının açmak istediği her dosya için Drive, MIME türlerini tanımladığınız varsayılan ve ikincil MIME türleriyle karşılaştırır:

  • "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 bir Açık URL'yi işleme başlıklı makaleyi inceleyin.

  • "İ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österilir. Ö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/plain veya application/pdf'yi desteklediğini gösteriyorsa Drive kullanıcı arayüzü, kullanıcıya Düz Metin'e veya PDF'ye dönüştürmek isteyip istemediğini sorar.

    Google Workspace dosyalarını yönetme hakkında bilgi edinmek için Google Workspace dokümanları için açık bir URL'yi yönetme başlıklı makaleyi inceleyin. Google Workspace dokümanları ve MIME türü dönüştürme biçimlerinin listesi için Google Workspace dokümanları için MIME türlerini dışa aktarma başlıklı makaleyi inceleyin.

Uygulamaya özel dokümanlar için URL açma işlemini gerçekleştirme

Drive kullanıcı arayüzü entegrasyonunu yapılandırma bölümünde belirtildiği gibi, uygulamanız, dosyayı açması için gereken bilgileri içeren şablon değişkenleri alır. Uygulamanız, state parametresinde varsayılan bir şablon değişkenleri grubu alır. Uygulamaya özel bir URL Açma için varsayılan state bilgileri şunlardır:

{
  "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: Dosya kimliklerinin kendi kaynak anahtarlarıyla eşlendiği bir JSON sözlüğü.
  • open: Gerçekleştirilen işlem. Açık URL kullanılırken değer open olur.
  • USER_ID: Kullanıcıyı benzersiz şekilde tanımlayan profil kimliği.

Uygulamanızın bu isteği işleme almak için şu adımları uygulaması gerekir:

  1. action alanının open değerine sahip olduğunu ve ids alanının mevcut olduğunu doğrulayın.
  2. Kullanıcı için yeni bir oturum oluşturmak üzere userId değerini kullanın. Oturum açmış kullanıcılar hakkında daha fazla bilgi için Kullanıcılar ve yeni etkinlikler başlıklı makaleyi inceleyin.
  3. files.get yöntemini kullanarak izinleri kontrol edin, dosya meta verilerini getirin ve ID değerlerini kullanarak dosya içeriğini indirin.
  4. İstek üzerinde 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ını kullanarak bağlantı ile paylaşılan dosyalara erişme başlıklı makaleyi inceleyin.

state parametresi URL biçiminde kodlanmıştır. Bu nedenle, uygulamanız kaçış karakterlerini işlemeli ve JSON olarak ayrıştırmalıdır.

Google Workspace dokümanları için Açık URL'yi işleme

Drive kullanıcı arayüzü entegrasyonunu yapılandırma başlıklı makalede belirtildiği gibi, uygulamanız state parametresi içinde varsayılan bir şablon değişkenleri grubu alır. Google Workspace Açık URL'si için varsayılan state bilgileri:

{
  "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 Google Workspace dosyaları açılırken kullanılır.
  • RESOURCE_KEYS: Dosya kimliklerinin kendi kaynak anahtarlarıyla eşlendiği bir JSON sözlüğü.
  • open: Gerçekleştirilen işlem. Açık URL kullanılırken değer open olur.
  • USER_ID: Kullanıcıyı tanımlayan profil kimliği.

Uygulamanızın bu isteği işleme almak için şu adımları uygulaması gerekir:

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

  2. files.get yöntemini kullanarak izinleri kontrol edin, dosya meta verilerini getirin ve EXPORT_ID değerlerini kullanarak MIME türünü belirleyin.

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

  4. İstek üzerinde 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ını kullanarak bağlantı ile paylaşılan dosyalara erişme başlıklı makaleyi inceleyin.

    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/export_pdf.py
    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/export_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;
      }
    }

    PHP

    drive/snippets/drive_v3/src/DriveExportPdf.php
    <?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üleyin veya kullanıcının dosyayı yeni dosya türü olarak kaydetmesine olanak tanıyan bir iletişim kutusu gösterin.

state parametresi URL biçiminde kodlanmıştır. Bu nedenle, uygulamanız kaçış karakterlerini işlemeli ve JSON olarak ayrıştırmalıdır.

Kullanıcılar ve yeni etkinlikler

Drive uygulamaları, tüm "birlikte aç" etkinliklerini potansiyel oturum açma işlemleri olarak değerlendirmelidir. 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.

Google Drive kullanıcı arayüzünden uygulama açmanın yanı sıra uygulamalar, uygulama içinden içerik seçmek için dosya seçici de gösterebilir. Daha fazla bilgi için Google Picker'ı inceleyin.