Uygulamalarımızda Google Drive Api özelliklerini kullanalım.
- Yazılım Uzmanları
- 10 Haziran 2018
- 613 kez görüntülendi.
Google Drive gittiğiniz her yere sunumlarınızı, raporlarınızı, dökümanlarınızı ve resimlerinizi götürmenizi sağlayan bir online depolama servisidir. Bu servis başlangıç seviyesinde 15gb a kadar alanı ücretsiz olarak kullanabilirsiniz. Google drive ı kullanabilmeniz için bir gmail hesabına ihtiyacınız bulunuyor. Bizler bu yazımızda google drive da oluşturduğumuz alanı google api lerini kullanarak uygulamalarımız ile nasıl entegre edebileceğimizi göreceğiz.
Google Drive ı uygulamalarımızda kullanabilmemiz için öncelikle Google Api Console dan Drive Api özelliğini aktive etmemiz gerekmektedir. Bu özelliği aktive edebilmek için aşağıdaki adımları izleyebilirsiniz.
-
Adım Drive API sini aktive etme.
- Hizmeti aktive edebilmek için sihirbazı kullanarak yeni bir proje oluşturabilir veya varolan bir projenizi seçerek Devam (Continue) tuşuna basıp gelen ekranda Kimlik bilgilerine git (Go to credentials) butonuna basınız.
- Projenize kimlik bilgisi ekleyin sayfasında iptal butonuna basın.
- Ekranın üst kısmındaki OAuth izin ekranı (OAuth consent screen) nı seçin. E-Posta adresi ve bu api yi kullanacağınız projenizin adını girip Kaydet butonuna basın.
- Kimlik bilgileri (Credentials) sekmesine geçip Kimlik bilgilerini oluştur (Create credentials) butonuna tıklayın ve OAuth istemci kimliği (OAuth client ID) seçin.
- Gelen ekranda oluşturacağımız uygulama türlerinden Diğer (Other) seçeneğini seçip bir isim belirledikten sonra Oluştur (Create) butonuna tıklayın.
- Tamam butonuna tıklayarak gelen diyalog penceresini kapatın.
- Oluşturduğumuz OAuth istemci kimliğini bilgisayarımıza download edelim
- Json formatında indirdiğimiz dosyanın adını client_secret.json olarak değiştirelim.
-
Projemizi oluşturalım.
- Visual Studio içerisinde C# programlama dili ile bir Console uygulaması oluşturalım.
- Nuget Package Manager Console kısmından Google.Apis.Drive.v3 package ini uygulamamıza install edelim.
PM> Install-Package Google.Apis.Drive.v3 - Json olarak indirdiğimiz client_secret.json dosyasını Visual Studio da oluşturduğumuz projemizin içerisine kopyalayalım.
- client_secret.json dosyasını seçip Properties penceresinden Copy to Output Directory kısmından Copy always özelliğini seçelim.
Visual Studio da oluşturduğumuz consol uygulamasının Program.cs class ında kullanacağımız kütüphaneleri ekleyelim.
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Drive.v3.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
Uygulamamız aşağıdaki fonksiyonlardan oluşacak.
- GetMenu : Uygulamada farklı işlemleri yapabileceğimiz bir menü ekranı.
- Login: Google OAuth2 ile login olacağımız bir fonksiyon.
- CreateDirectory : Google Drive da klasör oluşturabileceğimiz fonksiyon.
- GetFiles : Google Drive daki dosyalarımızın listesini alabileceğimiz fonksiyon.
- UploadFiles: Bilgisayarımızdaki bir dosyayı upload edebileceğimiz fonksiyon.
- DeleteFile : Google Drive daki bir dosyayı silebileceğimiz fonksiyon.
GetMenu:
public static int GetMenu()
{
Console.Clear();
Console.WriteLine("----------------------------------------");
Console.WriteLine("Dosya İşlemleri.");
Console.WriteLine("0. Login. ");
Console.WriteLine("1. Klasör Oluştur. ");
Console.WriteLine("2. Dosya Listesi.");
Console.WriteLine("3. Dosya Yükle. ");
Console.WriteLine("4. Dosya Sil");
Console.WriteLine("9. Çıkış. ");
Console.WriteLine("----------------------------------------");
Char vKey = new char();
int inputKey = 0;
bool isValidKey = false;
do
{
vKey = Console.ReadKey().KeyChar;
isValidKey = int.TryParse(vKey.ToString(), out inputKey);
} while (!isValidKey);
return inputKey;
}
Login:
static bool Login()
{
UserCredential credential;
using (var stream =
new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials/drive-dotnet-quickstart.json");
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore("Drive.Auth.Store")).Result;
Console.WriteLine("Kaydedildi.: " + credPath);
}
// Create Drive API service.
service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return true;
}
CreateDirectory:
static bool CreateDirectory()
{
Console.Clear();
Console.WriteLine("Klasör Adı Giriniz : ");
string DirectoryName = Console.ReadLine();
var body = new Google.Apis.Drive.v3.Data.File();
body.Name = DirectoryName;
body.MimeType = "application/vnd.google-apps.folder";
try
{
var request = service.Files.Create(body);
request.Fields = "id";
var _FF = request.Execute();
}
catch (Exception e)
{
Console.WriteLine("Hata Oluştu. : " + e.Message);
}
return true;
}
GetFiles:
static void GetFiles()
{
// Define parameters of request.
FilesResource.ListRequest listRequest = service.Files.List();
listRequest.PageSize = 10;
listRequest.Fields = "nextPageToken, files(id, name)";
// List files.
IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute()
.Files;
Console.Clear();
Console.WriteLine("Dosyalar:");
if (files != null && files.Count > 0)
{
foreach (var file in files)
{
Console.WriteLine("{0} ({1}) - {2}", file.Name, file.Id);
}
}
else
{
Console.WriteLine("Dosya bulunamadı.");
}
Console.ReadKey();
}
UploadFiles:
static bool UploadFiles()
{
Console.Clear();
Console.WriteLine("Yüklenecek Dosyanın path ini ve adını yazınız.");
string FullFileName = Console.ReadLine();
Console.WriteLine("Yüklenecek Dosyanın adını yazınız.");
string FileName = Console.ReadLine();
if (System.IO.File.Exists(FullFileName))
{
var fileMetaData = new Google.Apis.Drive.v3.Data.File();
fileMetaData.Name = FileName;
Google.Apis.Drive.v3.FilesResource.CreateMediaUpload request;
using (var stream = new System.IO.FileStream(FullFileName, FileMode.Open))
{
request = service.Files.Create(fileMetaData, stream, "image/jpeg");
request.Fields = "id";
request.Upload();
var fileId = request.ResponseBody;
}
}
return true;
}
DeleteFile:
static void DeleteFiles()
{
Console.Clear();
Console.WriteLine("Silmek istediğiniz dosyanın Id sini yazınız.");
string fileId = Console.ReadLine();
FilesResource.DeleteRequest deleteRequest = service.Files.Delete(fileId);
deleteRequest.Execute();
}
Program.cs Main Fonksiyonu:
static string[] Scopes = new[] { DriveService.Scope.Drive, DriveService.Scope.DriveFile };
static string ApplicationName = "OAuthWebFilePermission"; // Olusturulan Uygulama Adı
static DriveService service;
static void Main(string[] args)
{
int vKey = 0;
Login();
do
{
vKey = GetMenu();
switch (vKey)
{
case 0:
Login();
break;
case 1:
CreateDirectory();
break;
case 2:
GetFiles();
break;
case 3:
UploadFiles();
break;
case 4:
DeleteFiles();
break;
default:
break;
}
} while (vKey != 9);
}
Bu yazıya 0 yorum yapılmış.