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

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ü entegrasyonunu 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ü entegrasyonu 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'leri işleme bölümüne göz atı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 metin/düz veya uygulama/pdf desteklediğini önerirse 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 edinmek için Google Workspace dokümanları için açık URL'leri işleme başlıklı makaleye bakın. Google Workspace dokümanları 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'yi işleyin

Drive kullanıcı arayüzü entegrasyonunu yapılandırma bölümünde belirtildiği gibi, uygulamanız dosyayı açması için gerekli bilgileri içeren şablon değişkenleri alır. Uygulamanız, state parametresi içinde varsayılan bir şablon değişkenleri grubu alır. Uygulamaya özel bir Açılış URL'si 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 bir JSON sözlüğü.
  • open: Gerçekleştirilen 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 aşağıdaki adımları uygulayarak bu istek üzerine 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 isterseniz 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 bölümüne göz atın.
  3. İzinleri kontrol etmek, dosya meta verilerini getirmek ve ID değerlerini kullanarak 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ını kullanarak bağlantıyla paylaşılan dosyalara erişme bölümüne bakın.

state parametresi URL olarak kodlandığı için uygulamanız çıkış karakterlerini işlemeli ve 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 state parametresi içinde varsayılan bir grup ş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 bir JSON sözlüğü.
  • open: Gerçekleştirilen 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 aşağıdaki adımları uygulayarak bu istek üzerine işlem yapması gerekir:

  1. state alanındaki open değerini ve exportIds alanının varlığını algılayarak bunun bir 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 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 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/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ığı için uygulamanız çıkış 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 etkinlikleri olarak işlemelidir. 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 oturumu sonlandırılıp istenen kullanıcı olarak oturum açın.

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