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

Kullanıcı bir dosya seçip Drive kullanıcı arayüzündeki "Birlikte aç" menü öğesini tıkladığında, Drive kullanıcıyı ilgili uygulamanın Drive kullanıcı arayüzü entegrasyonunu yapılandırma bölümünde tanımlanan Açık 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 özgü ve Google Workspace dosyalarının bir kombinasyonunu seçebilir. Bir Drive kullanıcı arayüzü entegrasyonunu yapılandırdığınızda uygulamaya özgü 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.

Drive, kullanıcının açmak istediği her dosyanın 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 özgü dosyaların nasıl işleneceği hakkında bilgi edinmek için Uygulamaya özgü dokümanlar için 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ıdan Google Workspace dosyasını hangi dosya türüne dönüştüreceğ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ında uygulamanız metin/düz veya uygulama/pdf'i desteklediğini gösteriyorsa Drive kullanıcı arayüzü, kullanıcıya Düz Metin veya PDF biçimine dönüştürmek isteyip istemediğini sorar.

    Google Workspace dosyalarının nasıl işleneceği hakkında bilgi edinmek için Google Workspace belgeleri için açık URL'yi işleme başlıklı makaleyi inceleyin. Google Workspace belgelerinin ve MIME türü dönüştürme biçimlerinin listesi için Google Workspace belgeleri için MIME türlerini dışa aktarma başlıklı makaleyi inceleyin.

Uygulamaya özgü dokümanlar için bir Open URL işlevi kullanma

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, bir state parametresi içinde varsayılan bir şablon değişkenleri grubu alır. Uygulamaya özgü bir URL'yi açma işlemi 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: İlgili kaynak anahtarlarıyla eşlenen dosya kimliklerinin JSON sözlüğü.
  • open: Gerçekleştirilen işlem. Açık URL kullanıldığında değer open olur.
  • USER_ID: Kullanıcıyı benzersiz şekilde tanımlayan profil kimliği.

Uygulamanız, aşağıdaki adımları uygulayarak bu isteği yerine getirmelidir:

  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. İzinleri kontrol etmek, dosya meta verilerini almak ve ID değerlerini kullanarak dosya içeriğini indirmek için files.get yöntemini kullanın.
  4. İstekte resourceKeys ayarlanmışsa 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ıyla paylaşılan dosyalara erişme başlıklı makaleyi inceleyin.

state parametresi URL olarak kodlandığından 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 bölümünde belirtildiği gibi, uygulamanız bir state parametresi içinde varsayılan bir şablon değişkeni grubu alır. Google Workspace açık URL'si için varsayılan state bilgileri şunlardır:

{
  "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ştirilen işlem. Açık URL kullanıldığında değer open olur.
  • USER_ID: Kullanıcıyı tanımlayan profil kimliği.

Uygulamanızın bu isteği yerine getirmek için aşağıdaki adımları uygulaması gerekir:

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

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

  3. Dosya içeriğini files.export yöntemini kullanarak dönüştürün. Aşağıdaki kod örneğinde, bir Google Workspace belgesinin istenen MIME türüne nasıl dışa 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ını kullanarak bağlantıyla 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
    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 olarak kodlandığından uygulamanızın kaçış karakterlerini işleyip JSON olarak ayrıştırması gerekir.

Kullanıcılar ve yeni etkinlikler

Drive uygulamaları, tüm "birlikte açık" etkinliklerini olası 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 için mevcut oturumu sonlandırın ve istenen kullanıcı olarak oturum açın.

Uygulamalar, Google Drive kullanıcı arayüzünden bir uygulamayı açmanın yanı sıra uygulama içinden içerik seçmek için dosya seçici de gösterebilir. Daha fazla bilgi için Google Seçici başlıklı makaleyi inceleyin.