Dosya, klasör ve sürücü paylaşma

Her Google Drive dosyası, klasörü ve ortak Drive'ın ilişkili permissions kaynakları vardır. Her kaynak, belirli bir type (user, group, domain, anyone) ve role (owner, organizer, fileOrganizer, writer, commenter, reader) için izin tanımlar. Örneğin, bir dosyada belirli bir kullanıcıya (type=user) salt okuma erişimi (role=reader) veren bir izin olabilirken başka bir izin, belirli bir grubun üyelerine (type=group) dosyaya yorum ekleme olanağı (role=commenter) verebilir.

Rollerin ve her birinin izin verdiği işlemlerin tam listesi için Roller ve izinler başlıklı makaleyi inceleyin.

İzinlerin işleyiş şekli

Bir klasörün izin listeleri aşağıya doğru yayılır. Tüm alt dosya ve klasörler, üst öğeden izinleri devralır. İzinler veya hiyerarşi değiştiğinde, tüm iç içe yerleştirilmiş klasörlerde yinelemeli olarak dağıtım gerçekleşir. Örneğin, bir klasörde bulunan bir dosya başka bir klasöre taşınırsa yeni klasörün izinleri dosyaya uygulanır. Yeni klasör, dosya kullanıcısına "yazar" gibi yeni bir rol verirse eski rolü geçersiz kılar.

Buna karşılık, bir dosya bir klasörden role=writer devralır ve "okur" rolü sağlayan başka bir klasöre taşınırsa dosya artık role=reader devralır.

Devralınan izinler, ortak Drive'daki bir dosyadan veya klasörden kaldırılamaz. Bunun yerine, bu izinler devralındıkları doğrudan veya dolaylı üst öğede düzenlenmelidir. Devralınan izinler, "Drive'ım" veya "Benimle paylaşılanlar" bölümündeki öğelerden kaldırılabilir.

Buna karşılık, devralınan izinler Drive'ımdaki bir dosya veya klasörde geçersiz kılınabilir. Bu nedenle, bir dosya OneDrive klasöründen role=writer devralırsanız dosyadaki izin düzeyini düşürmek için role=reader ayarlayabilirsiniz.

Dosya özelliklerini anlama

permissions kaynağı, mevcut kullanıcının bir dosya veya klasör üzerinde işlem yapma yeteneğini belirlemez. Bunun yerine files kaynağı, bir dosyada veya klasörde işlem yapılıp yapılamayacağını belirtmek için kullanılan bir dizi Boole capabilities alanı içerir. Google Drive API, bu alanları mevcut kullanıcının dosya veya klasörle ilişkili izin kaynağına göre ayarlar.

Örneğin, Ali uygulamanıza giriş yapıp bir dosya paylaşmaya çalıştığında, Ali'nin rolü dosyada izinler açısından kontrol edilir. Rol, kullanıcının dosya paylaşmasına izin veriyorsa dosyayla ilgili capabilities (ör. canShare) rolle ilgili olarak doldurulur. Ali dosyayı paylaşmak isterse uygulamanız, canShare değerinin true olarak ayarlandığından emin olmak için capabilities değerini kontrol eder.

capabilities dosyasını alma örneği için Dosya özelliklerini alma bölümüne bakın.

Dosya özelliklerini alma

Uygulamanız bir dosyayı açarken dosyanın özelliklerini kontrol etmeli ve kullanıcı arayüzünü mevcut kullanıcının izinlerini yansıtacak şekilde oluşturmalıdır. Örneğin, kullanıcının dosyada canComment yetkisi yoksa kullanıcı arayüzünde yorum yapma özelliği devre dışı bırakılmalıdır.

Özellikleri kontrol etmek için fileId yol parametresi ve fields parametresi capabilities alanına ayarlanmış şekilde files kaynağındaki get() yöntemini çağırın. fields parametresini kullanarak alanları döndürme hakkında daha fazla bilgi için Belirli alanları döndürme başlıklı makaleyi inceleyin.

Örnek göster

Aşağıdaki kod örneğinde, kullanıcı izinlerinin nasıl doğrulanacağı gösterilmektedir. Yanıt, kullanıcının dosyada sahip olduğu özelliklerin listesini döndürür. Her özellik, kullanıcının gerçekleştirebileceği ayrıntılı bir işleme karşılık gelir. Bazı alanlar yalnızca ortak Drive'lardaki öğeler için doldurulur.

İstek

GET https://www.googleapis.com/drive/v3/files/FILE_ID?fields=capabilities

Yanıt

{
  "capabilities": {
    "canAcceptOwnership": false,
    "canAddChildren": false,
    "canAddMyDriveParent": false,
    "canChangeCopyRequiresWriterPermission": true,
    "canChangeSecurityUpdateEnabled": false,
    "canComment": true,
    "canCopy": true,
    "canDelete": true,
    "canDownload": true,
    "canEdit": true,
    "canListChildren": false,
    "canModifyContent": true,
    "canModifyContentRestriction": true,
    "canModifyLabels": true,
    "canMoveChildrenWithinDrive": false,
    "canMoveItemOutOfDrive": true,
    "canMoveItemWithinDrive": true,
    "canReadLabels": true,
    "canReadRevisions": true,
    "canRemoveChildren": false,
    "canRemoveMyDriveParent": true,
    "canRename": true,
    "canShare": true,
    "canTrash": true,
    "canUntrash": true
  }
}

Drive kaynaklarını paylaşma senaryoları

Beş farklı paylaşım senaryosu vardır:

  1. Drive'ım'da dosya paylaşmak için kullanıcının role=writer veya role=owner iznine sahip olması gerekir.

  2. Drive'ım bölümünde bir klasörü paylaşmak için kullanıcının role=writer veya role=owner erişimine sahip olması gerekir.

    • Dosya için writersCanShare boole değeri false olarak ayarlanmışsa kullanıcının daha izin verici role=owner değerine sahip olması gerekir.

    • role=writer ile Drive'ım klasörlerinde geçici erişime (geçerlilik bitiş tarihi ve saati ile yönetilir) izin verilmez. Daha fazla bilgi için Dosya erişimini sınırlamak için son kullanma tarihi belirleme başlıklı makaleyi inceleyin.

  3. Ortak Drive'daki bir dosyayı paylaşmak için kullanıcının role=writer, role=fileOrganizer veya role=organizer erişimine sahip olması gerekir.

    • writersCanShare ayarı, ortak Drive'lardaki öğeler için geçerli değildir. Her zaman true olarak ayarlanmış gibi değerlendirilir.
  4. Ortak Drive'daki bir klasörü paylaşmak için kullanıcının role=organizer erişimine sahip olması gerekir.

    • Ortak Drive'daki sharingFoldersRequiresOrganizerPermission kısıtlaması false olarak ayarlanmışsa role=fileOrganizer izni olan kullanıcılar bu ortak Drive'daki klasörleri paylaşabilir.
  5. Ortak Drive üyeliğini yönetmek için kullanıcının role=organizer erişimine sahip olması gerekir. Ortak Drive'ların üyeleri yalnızca kullanıcılar ve gruplar olabilir.

İzin oluşturma

İzin oluştururken aşağıdaki iki alan gereklidir:

  • type: type, izin kapsamını (user, group, domain veya anyone) tanımlar. type=user içeren bir izin belirli bir kullanıcı için geçerliyken type=domain içeren bir izin belirli bir alandaki herkes için geçerlidir.

  • role: role alanı, type'ın gerçekleştirebileceği işlemleri tanımlar. Örneğin, type=user ve role=reader içeren bir izin, belirli bir kullanıcıya dosyaya veya klasöre salt okuma erişimi verir. type=domain ve role=commenter içeren bir izin ise alandaki herkesin bir dosyaya yorum eklemesine olanak tanır. Rollerin ve her birinin izin verdiği işlemlerin tam listesi için Roller ve izinler başlıklı makaleyi inceleyin.

type=user veya type=group olan bir izin oluşturduğunuzda, belirli bir kullanıcıyı veya grubu izine bağlamak için bir emailAddress de sağlamanız gerekir.

type=domain olan bir izin oluşturduğunuzda, izine belirli bir alanı bağlamak için bir domain da sağlamanız gerekir.

İzin oluşturmak için:

  1. İlişkili dosya veya klasör için fileId yol parametresiyle birlikte create() yöntemini kullanın.
  2. İsteğin gövdesinde type ve role değerlerini belirtin.
  3. type=user veya type=group ise bir emailAddress sağlayın. type=domain ise bir domain sağlayın.

Örnek göster

Aşağıdaki kod örneğinde, iznin nasıl oluşturulacağı gösterilmektedir. Yanıt, atanan permissionId dahil olmak üzere bir Permission kaynağı örneği döndürür.

İstek

POST https://www.googleapis.com/drive/v3/files/FILE_ID/permissions
{
  "requests": [
    {
        "type": "user",
        "role": "commenter",
        "emailAddress": "alex@altostrat.com"
    }
  ]
}

Yanıt

{
    "kind": "drive#permission",
    "id": "PERMISSION_ID",
    "type": "user",
    "role": "commenter"
}

Hedef kitleleri kullanma

Hedef kitleler, kullanıcıların öğelerini paylaşmaları için önerebileceğiniz, bölümler veya ekipler gibi kullanıcı gruplarıdır. Kullanıcıları, öğelerini kuruluşunuzun tamamı yerine daha belirli veya sınırlı kitlelerle paylaşmaya teşvik edebilirsiniz. Hedef kitleler, verilerinizin güvenliğini ve gizliliğini artırmanıza ve kullanıcıların uygun şekilde paylaşım yapmasını kolaylaştırmanıza yardımcı olabilir. Daha fazla bilgi için Hedef kitleler hakkında başlıklı makaleyi inceleyin.

Hedef kitleleri kullanmak için:

  1. Google Yönetici Konsolu'nda Menü > Dizin > Hedef kitleler'e gidin.

    Hedef kitleler'e gidin

    Bu görev için süper yönetici ayrıcalıklarına sahip bir hesapla oturum açmış olmanız gerekir.

  2. Hedef kitleler listesinde hedef kitlenin adını tıklayın. Hedef kitle oluşturmak için Hedef kitle oluşturma başlıklı makaleyi inceleyin.

  3. Hedef kitle URL'sindeki benzersiz kimliği kopyalayın: https://admin.google.com/ac/targetaudiences/ID.

  4. type=domain ile izin oluşturun ve domain alanını ID.audience.googledomains.com olarak ayarlayın.

Kullanıcıların hedef kitlelerle nasıl etkileşim kurduğunu görüntülemek için Bağlantı paylaşımı için kullanıcı deneyimi başlıklı makaleyi inceleyin.

Tüm izinleri listeleme

Bir dosya, klasör veya ortak Drive'ın tüm izinlerini almak için permissions kaynağındaki list() yöntemini kullanın.

Örnek göster

Aşağıdaki kod örneğinde, tüm izinlerin nasıl alınacağı gösterilmektedir. Yanıt, izinlerin listesini döndürür.

İstek

GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissions

Yanıt

{
  "kind": "drive#permissionList",
  "permissions": [
    {
      "id": "PERMISSION_ID",
      "type": "user",
      "kind": "drive#permission",
      "role": "commenter"
    }
  ]
}

İzinleri güncelle

Bir dosya veya klasördeki izinleri güncellemek için atanan rolü değiştirebilirsiniz. Rol kaynağını bulma hakkında daha fazla bilgi için Rol kaynağını belirleme başlıklı makaleyi inceleyin.

  1. permissions kaynağında permissionId yol parametresi, değiştirme iznine ve fileId yol parametresi, ilişkili dosya, klasör veya ortak Drive'a ayarlanmış şekilde update() yöntemini çağırın. permissionId değerini bulmak için fileId yol parametresini kullanarak permissions kaynağında list() yöntemini kullanın.

  2. İstekte yeni role değerini tanımlayın.

Kullanıcı veya grup zaten üye olsa bile ortak Drive'daki dosya ya da klasörler için ayrı ayrı izin verebilirsiniz. Örneğin, Ali ortak Drive üyeliği kapsamında role=commenter Ancak uygulamanız, Alex'e ortak Drive'daki bir dosya için role=writer izni verebilir. Bu durumda, yeni rol üyelik aracılığıyla verilen rolden daha fazla izin verdiğinden yeni izin, dosya veya klasör için etkili rol olur.

Örnek göster

Aşağıdaki kod örneğinde, bir dosya veya klasördeki izinlerin yorumcu yerine yazar olarak nasıl değiştirileceği gösterilmektedir. Yanıt, bir permissions kaynağı örneği döndürür.

İstek

PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID
{
  "requests": [
    {
        "role": "writer"
    }
  ]
}

Yanıt

{
  "kind": "drive#permission",
  "id": "PERMISSION_ID",
  "type": "user",
  "role": "writer"
}

Rol kaynağını belirleme

Bir dosya veya klasördeki rolü değiştirmek için rolün kaynağını bilmeniz gerekir. Ortak Drive'larda rolün kaynağı, ortak Drive'a üyeliğe, bir klasördeki role veya bir dosyadaki role bağlı olabilir.

Bir ortak Drive'ın veya bu Drive'daki öğelerin rol kaynağını belirlemek için permissions kaynağında fileId ve permissionId yol parametreleriyle birlikte get() yöntemini çağırın ve fields parametresini permissionDetails alanına ayarlayın.

permissionId değerini bulmak için fileId yol parametresini kullanarak permissions kaynağında list() yöntemini kullanın. list isteğinde permissionDetails alanını almak için fields parametresini permissions/permissionDetails olarak ayarlayın.

Bu alan, kullanıcı, grup veya alan için devralınan ve doğrudan tüm dosya izinlerini listeler.

Örnek göster

Aşağıdaki kod örneğinde, rol kaynağının nasıl belirleneceği gösterilmektedir. Yanıt, permissions kaynağının permissionDetails değerini döndürür. inheritedFrom alanı, iznin devralındığı öğenin kimliğini sağlar.

İstek

GET https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID?fields=permissionDetails&supportsAllDrives=true

Yanıt

{
  "permissionDetails": [
    {
      "permissionType": "member",
      "role": "commenter",
      "inheritedFrom": "INHERITED_FROM_ID",
      "inherited": true
    },
    {
      "permissionType": "file",
      "role": "writer",
      "inherited": false
    }
  ]
}

Toplu isteklerle birden fazla izni güncelleme

Birden fazla izni değiştirmek için toplu istekler kullanmanızı önemle tavsiye ederiz.

Aşağıda, istemci kitaplığıyla toplu izin değişikliği gerçekleştirme örneği verilmiştir.

Java

drive/snippets/drive_v3/src/main/java/ShareFile.java
import com.google.api.client.googleapis.batch.BatchRequest;
import com.google.api.client.googleapis.batch.json.JsonBatchCallback;
import com.google.api.client.googleapis.json.GoogleJsonError;
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.client.http.HttpHeaders;
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.api.services.drive.model.Permission;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/* Class to demonstrate use-case of modify permissions. */
public class ShareFile {

  /**
   * Batch permission modification.
   * realFileId file Id.
   * realUser User Id.
   * realDomain Domain of the user ID.
   *
   * @return list of modified permissions if successful, {@code null} otherwise.
   * @throws IOException if service account credentials file not found.
   */
  public static List<String> shareFile(String realFileId, String realUser, String realDomain)
      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.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();

    final List<String> ids = new ArrayList<String>();


    JsonBatchCallback<Permission> callback = new JsonBatchCallback<Permission>() {
      @Override
      public void onFailure(GoogleJsonError e,
                            HttpHeaders responseHeaders)
          throws IOException {
        // Handle error
        System.err.println(e.getMessage());
      }

      @Override
      public void onSuccess(Permission permission,
                            HttpHeaders responseHeaders)
          throws IOException {
        System.out.println("Permission ID: " + permission.getId());

        ids.add(permission.getId());

      }
    };
    BatchRequest batch = service.batch();
    Permission userPermission = new Permission()
        .setType("user")
        .setRole("writer");

    userPermission.setEmailAddress(realUser);
    try {
      service.permissions().create(realFileId, userPermission)
          .setFields("id")
          .queue(batch, callback);

      Permission domainPermission = new Permission()
          .setType("domain")
          .setRole("reader");

      domainPermission.setDomain(realDomain);

      service.permissions().create(realFileId, domainPermission)
          .setFields("id")
          .queue(batch, callback);

      batch.execute();

      return ids;
    } catch (GoogleJsonResponseException e) {
      // TODO(developer) - handle error appropriately
      System.err.println("Unable to modify permission: " + e.getDetails());
      throw e;
    }
  }
}

Python

drive/snippets/drive-v3/file_snippet/share_file.py
import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def share_file(real_file_id, real_user, real_domain):
  """Batch permission modification.
  Args:
      real_file_id: file Id
      real_user: User ID
      real_domain: Domain of the user ID
  Prints modified permissions

  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)
    ids = []
    file_id = real_file_id

    def callback(request_id, response, exception):
      if exception:
        # Handle error
        print(exception)
      else:
        print(f"Request_Id: {request_id}")
        print(f'Permission Id: {response.get("id")}')
        ids.append(response.get("id"))

    # pylint: disable=maybe-no-member
    batch = service.new_batch_http_request(callback=callback)
    user_permission = {
        "type": "user",
        "role": "writer",
        "emailAddress": "user@example.com",
    }
    batch.add(
        service.permissions().create(
            fileId=file_id,
            body=user_permission,
            fields="id",
        )
    )
    domain_permission = {
        "type": "domain",
        "role": "reader",
        "domain": "example.com",
    }
    domain_permission["domain"] = real_domain
    batch.add(
        service.permissions().create(
            fileId=file_id,
            body=domain_permission,
            fields="id",
        )
    )
    batch.execute()

  except HttpError as error:
    print(f"An error occurred: {error}")
    ids = None

  return ids


if __name__ == "__main__":
  share_file(
      real_file_id="1dUiRSoAQKkM3a4nTPeNQWgiuau1KdQ_l",
      real_user="gduser1@workspacesamples.dev",
      real_domain="workspacesamples.dev",
  )

Node.js

drive/snippets/drive_v3/file_snippets/share_file.js
/**
 * Batch permission modification
 * @param{string} fileId file ID
 * @param{string} targetUserEmail username
 * @param{string} targetDomainName domain
 * @return{list} permission id
 * */
async function shareFile(fileId, targetUserEmail, targetDomainName) {
  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});
  const permissionIds = [];

  const permissions = [
    {
      type: 'user',
      role: 'writer',
      emailAddress: targetUserEmail, // 'user@partner.com',
    },
    {
      type: 'domain',
      role: 'writer',
      domain: targetDomainName, // 'example.com',
    },
  ];
  // Note: Client library does not currently support HTTP batch
  // requests. When possible, use batched requests when inserting
  // multiple permissions on the same item. For this sample,
  // permissions are inserted serially.
  for (const permission of permissions) {
    try {
      const result = await service.permissions.create({
        resource: permission,
        fileId: fileId,
        fields: 'id',
      });
      permissionIds.push(result.data.id);
      console.log(`Inserted permission id: ${result.data.id}`);
    } catch (err) {
      // TODO(developer): Handle failed permissions
      console.error(err);
    }
  }
  return permissionIds;
}

PHP

drive/snippets/drive_v3/src/DriveShareFile.php
use Google\Client;
use Google\Service\Drive;
function shareFile()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $realFileId = readline("Enter File Id: ");
        $realUser = readline("Enter user email address: ");
        $realDomain = readline("Enter domain name: ");
        $ids = array();
            $fileId = '1sTWaJ_j7PkjzaBWtNc3IzovK5hQf21FbOw9yLeeLPNQ';
            $fileId = $realFileId;
            $driveService->getClient()->setUseBatch(true);
            try {
                $batch = $driveService->createBatch();

                $userPermission = new Drive\Permission(array(
                    'type' => 'user',
                    'role' => 'writer',
                    'emailAddress' => 'user@example.com'
                ));
                $userPermission['emailAddress'] = $realUser;
                $request = $driveService->permissions->create(
                    $fileId, $userPermission, array('fields' => 'id'));
                $batch->add($request, 'user');
                $domainPermission = new Drive\Permission(array(
                    'type' => 'domain',
                    'role' => 'reader',
                    'domain' => 'example.com'
                ));
                $userPermission['domain'] = $realDomain;
                $request = $driveService->permissions->create(
                    $fileId, $domainPermission, array('fields' => 'id'));
                $batch->add($request, 'domain');
                $results = $batch->execute();

                foreach ($results as $result) {
                    if ($result instanceof Google_Service_Exception) {
                        // Handle error
                        printf($result);
                    } else {
                        printf("Permission ID: %s\n", $result->id);
                        array_push($ids, $result->id);
                    }
                }
            } finally {
                $driveService->getClient()->setUseBatch(false);
            }
            return $ids;
    } catch(Exception $e) {
        echo "Error Message: ".$e;
    }

}

.NET

drive/snippets/drive_v3/DriveV3Snippets/ShareFile.cs
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Drive.v3.Data;
using Google.Apis.Requests;
using Google.Apis.Services;

namespace DriveV3Snippets
{
    // Class to demonstrate use-case of Drive modify permissions.
    public class ShareFile
    {
        /// <summary>
        /// Batch permission modification.
        /// </summary>
        /// <param name="realFileId">File id.</param>
        /// <param name="realUser">User id.</param>
        /// <param name="realDomain">Domain id.</param>
        /// <returns>list of modified permissions, null otherwise.</returns>
        public static IList<String> DriveShareFile(string realFileId, string realUser, string realDomain)
        {
            try
            {
                /* Load pre-authorized user credentials from the environment.
                 TODO(developer) - See https://developers.google.com/identity for
                 guides on implementing OAuth2 for your application. */
                GoogleCredential credential = GoogleCredential.GetApplicationDefault()
                    .CreateScoped(DriveService.Scope.Drive);

                // Create Drive API service.
                var service = new DriveService(new BaseClientService.Initializer
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "Drive API Snippets"
                });

                var ids = new List<String>();
                var batch = new BatchRequest(service);
                BatchRequest.OnResponse<Permission> callback = delegate(
                    Permission permission,
                    RequestError error,
                    int index,
                    HttpResponseMessage message)
                {
                    if (error != null)
                    {
                        // Handle error
                        Console.WriteLine(error.Message);
                    }
                    else
                    {
                        Console.WriteLine("Permission ID: " + permission.Id);
                    }
                };
                Permission userPermission = new Permission()
                {
                    Type = "user",
                    Role = "writer",
                    EmailAddress = realUser
                };

                var request = service.Permissions.Create(userPermission, realFileId);
                request.Fields = "id";
                batch.Queue(request, callback);

                Permission domainPermission = new Permission()
                {
                    Type = "domain",
                    Role = "reader",
                    Domain = realDomain
                };
                request = service.Permissions.Create(domainPermission, realFileId);
                request.Fields = "id";
                batch.Queue(request, callback);
                var task = batch.ExecuteAsync();
                task.Wait();
                return ids;
            }
            catch (Exception e)
            {
                // TODO(developer) - handle error appropriately
                if (e is AggregateException)
                {
                    Console.WriteLine("Credential Not found");
                }
                else
                {
                    throw;
                }
            }
            return null;
        }
    }
}

İzinleri silme

Bir dosyaya veya klasöre erişimi iptal etmek için permissions kaynağındaki delete() yöntemini fileId ve permissionId yol parametrelerini izini silecek şekilde ayarlayarak çağırın.

"Drive'ım"daki öğelerde devralınan izinleri silebilirsiniz. Devralınan bir izin silindiğinde öğeye ve varsa alt öğelere erişim iptal edilir.

Ortak Drive'daki öğeler için devralınan izinler iptal edilemez. Bunun yerine, üst dosya veya klasördeki izni güncelleyin ya da silin.

delete() yöntemi, doğrudan ortak Drive dosyasına veya klasörüne uygulanan izinleri silmek için de kullanılır.

Örnek göster

Aşağıdaki kod örneğinde, permissionId silinerek erişimin nasıl iptal edileceği gösterilmektedir. Başarılı olursa yanıt metni boş olur. İznin kaldırıldığını onaylamak için permissions kaynağında fileId yol parametresi ile list() yöntemini kullanın.

İstek

DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/permissions/PERMISSION_ID

Dosya erişimini sınırlamak için son kullanma tarihi belirleme

Hassas bir projede kullanıcılarla çalışıyorsanız belirli bir süre sonra bu kullanıcıların Drive'daki belirli dosyalara erişimini kısıtlamak isteyebilirsiniz. Drive'ım bölümündeki dosyalara erişimi sınırlayan veya kaldıran bir geçerlilik bitiş tarihi belirleyebilirsiniz.

Geçerlilik bitiş tarihini ayarlamak için:

  • permissions kaynağında create() yöntemini kullanın ve expirationTime alanını (gerekli diğer alanlarla birlikte) ayarlayın. Daha fazla bilgi için İzin oluşturma başlıklı makaleyi inceleyin.

  • permissions kaynağında update() yöntemini kullanın ve expirationTime alanını (gerekli diğer alanlarla birlikte) ayarlayın. Daha fazla bilgi için İzinleri güncelleme başlıklı makaleyi inceleyin.

expirationTime alanı, iznin süresinin RFC 3339 tarih-saat biçiminde ne zaman dolacağını belirtir. Süre sonu süreleri aşağıdaki kısıtlamalara tabidir:

  • Yalnızca kullanıcı ve grup izinlerinde ayarlanabilir.
  • Zaman gelecekte olmalıdır.
  • Zaman, bir yıldan daha ileri bir tarih olamaz.

Süre sonu tarihi hakkında daha fazla bilgi için aşağıdaki makaleleri inceleyin: