Настольное приложение С#. Простой пример, как загрузить файл на Google Диск

Есть ли пример кода настольного приложения, как авторизоваться в сервисе Google Диск и загрузить файл?

В настоящее время у меня есть:

var parameters = new OAuth2Parameters
                                 {
                                     ClientId = ClientCredentials.ClientId,
                                     ClientSecret = ClientCredentials.ClientSecret,
                                     RedirectUri = ClientCredentials.RedirectUris[0],
                                     Scope = ClientCredentials.GetScopes()
                                 };    
string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
    // Open url, click to allow and copy secret code
    parameters.AccessCode = secretCodeFromBrowser;
    OAuthUtil.GetAccessToken(parameters);
    string accessToken = parameters.AccessToken;
    // So, there is the access token

Но каковы следующие шаги? Как я вижу из примеров, я должен получить экземпляр IAuthenticator и передать его в конструктор класса DriveService... Как получить экземпляр IAuthenticator? Если мой приведенный выше код правильный... Заранее спасибо.


person Alexey    schedule 16.08.2012    source источник
comment
Возможный дубликат: stackoverflow.com/ вопросы/10317638/   -  person Sergey Vyacheslavovich Brunov    schedule 16.08.2012
comment
Для тех, кто любит простоту, я написал простую оболочку, которая поддерживает плавный API для команд привода. Репозиторий Github   -  person Berkays    schedule 28.02.2017


Ответы (1)


Вот полный пример командной строки на C# для загрузки файла на Google Диск:

using System;
using System.Diagnostics;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using Google.Apis.Authentication.OAuth2.DotNetOpenAuth;
using Google.Apis.Drive.v2;
using Google.Apis.Drive.v2.Data;
using Google.Apis.Util;

namespace GoogleDriveSamples
{
    class DriveCommandLineSample
    {
        static void Main(string[] args)
        {
            String CLIENT_ID = "YOUR_CLIENT_ID";
            String CLIENT_SECRET = "YOUR_CLIENT_SECRET";

            // Register the authenticator and create the service
            var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description, CLIENT_ID, CLIENT_SECRET);
            var auth = new OAuth2Authenticator<NativeApplicationClient>(provider, GetAuthorization);
            {
                Authenticator = auth
            });

            File body = new File();
            body.Title = "My document";
            body.Description = "A test document";
            body.MimeType = "text/plain";

            byte[] byteArray = System.IO.File.ReadAllBytes("document.txt");
            System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray);

            FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain");
            request.Upload();

            File file = request.ResponseBody;
            Console.WriteLine("File id: " + file.Id);
            Console.ReadLine();
        }

        private static IAuthorizationState GetAuthorization(NativeApplicationClient arg)
        {
            // Get the auth URL:
            IAuthorizationState state = new AuthorizationState(new[] { DriveService.Scopes.Drive.GetStringValue() });
            state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
            Uri authUri = arg.RequestUserAuthorization(state);

            // Request authorization from the user (by opening a browser window):
            Process.Start(authUri.ToString());
            Console.Write("  Authorization Code: ");
            string authCode = Console.ReadLine();
            Console.WriteLine();

            // Retrieve the access token by using the authorization code:
            return arg.ProcessUserAuthorization(authCode, state);
        }
    }
}

ОБНОВЛЕНИЕ: этот пример быстрого запуска теперь доступен по адресу https://developers.google.com/drive/quickstart

person Claudio Cherubino    schedule 16.08.2012
comment
Я знаю, что это немного старый пост. Но я пытался использовать ваш код для обучения. Но я боюсь, что получаю ошибку компиляции в var service = new DriveService(auth);. Ошибка компиляции отображается как Argument 1: cannot convert from 'Google.Apis.Authentication.OAuth2.OAuth2Authenticator<Google.Apis.Authentication.OAuth2.DotNetOpenAuth.NativeApplicationClient>' to 'Google.Apis.Services.BaseClientService.Initializer'. Можете ли вы помочь с этим? - person Sandy; 28.03.2013
comment
Более того, я немного запутался еще с несколькими концепциями и не могу их уложить в голове даже после прочтения в Интернете. Я видел ваш профиль SO, 0 вопросов и более 400 ответов. Я был бы очень рад, если бы я мог потратить ваши 5 минут в чате SO, чтобы прояснить некоторые из моих замешательств. Я знаю, что прошу слишком многого сейчас :) - person Sandy; 28.03.2013
comment
Поэтому я исправил это, я использовал неправильную версию dll. Теперь нужно работать, чтобы стереть другие мои заблуждения - person Sandy; 28.03.2013
comment
@Клаудио Керубино: можно ли интегрировать его в визуальную студию 2008? - person DSP; 17.06.2017