2015-02-04 5 views
1

Я несколько раз отрывал свои волосы от этого. Я признаю, что я не «такой программист» - я пишу математические алгоритмы и не являюсь веб-программистом, защитником или протоколом. Думал, что поделился бы своими нынешними знаниями, поскольку, похоже, это несколько «сумасшедшая» тема. Может быть, я не понял официальную документацию, но до сих пор я борюсь, и я обнаружил, что другие люди борются с тем, что, как я подозреваю, все еще является новой технологией. Я напишу эти ссылки ниже в комментариях.Google Spreadsheets OAuth 2.0 для настольного приложения - может ли кто-нибудь получить эту работу * просто *?

Как я понимаю, существуют три принципиальных способа использования OAuth 2.0 с Google Drive/Google Spreadsheets, которые реализованы немного по-другому.

  1. Для установленной, настольное приложение < == этот пост посвящен этой
  2. Для серверной службы
  3. Для веб-приложения

Для OAuth 2.0 для установленное настольное приложение, по-видимому, ДВУХ способов сделать это. Один использует GoogleWebAuthorizationBroker, а другой - GoogleAuthorizationCodeFlow. Я не могу доказать это окончательно, но кажется, что первое было устаревшим в 2013 году, а последнее - предпочтительным.

Во-первых, кто-нибудь, если верно, что GoogleAuthorizationCodeFlow в настоящее время является предпочтительным способом? Я вкратце подобрал подход GoogleWebAuthorizationBroker, который работал и вошел в систему только один раз, и я смог запустить SpreadsheetsService.Query, но, похоже, сгенерированный токен действителен только час, и я пока не могу понять, как его обновить. Я подозреваю, что GoogleAuthorizationCodeFlow может управлять этим.

Во-вторых, может ли кто-нибудь опубликовать любой рабочий код для для получения и обновления определенной электронной таблицы Google с использованием OAuth 2.0 в C# для настольного приложения? Я сам работаю над этим и буду публиковать свой код, если буду работать.

+0

Официального Google OAuth 2.0 Docs http://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#installed_applications –

+0

Таблица Google Docs https: // разработчиков .google.com/google-apps/spreadsheets/# setting_up_your_client_library –

+0

Использование OAuth 2.0 для клиентских приложений https://developers.google.com/accounts/docs/OAuth2UserAgent –

ответ

3

На самом деле есть только два способа доступа к приводу Google, Oauth2 или учетной записи службы, которая является видом Oauth1. Я не думаю, что вы можете получить доступ к приводу Google с помощью общедоступного ключа API, но мне придется дважды проверить это.

Есть четыре способа настройки учетных данных

  1. Открытый API доступа (ключ API) используется для общего доступа, где вам не нужно проходить проверку подлинности. Книги Google и Google url shortener, некоторые части google + api, я думаю также. (вы не упомянули об этом, но я)
  2. Идентификатор клиента для собственного приложения (Установленные приложения). Это в основном, когда URI перенаправления всегда будет локальным хостом. Вы также можете использовать это, если вы тестируете веб-приложение локально. (Это oauth2 и требовать от пользователя аутентификации всплывал браузер вещь)
  3. обслуживание счетов: не служат R счета они используются для учетных записей, где вы лично иметь доступ к данным. Это не требует от пользователя аутентификации, поскольку вы настроили аутентификацию для учетной записи службы в фоновом режиме.Пример. Возьмите адрес электронной почты учетной записи службы и предоставите ему доступ к моему каталогу на диске Google, чтобы получить доступ к ним.
  4. веб-приложения да для веб-приложений, потому что перенаправление uri, где аутентификационный сервер возвращает аутентификацию, является веб-сайтом. (Oauth2 будет требовать аутентификации)

Автоматизация работает в фоновом режиме Если вы хотите что-то настроить работает на вкладке хрон вы можете использовать любой из вышеперечисленных. Два и четыре потребуют, чтобы вы сохранили токен обновления для использования позже, потому что это Oauth2.

GoogleAuthorizationCodeFlow была старая версия Google-DotNet-клиент Lib

GoogleWebAuthorizationBroker для текущей версии google-dotnet-client lib, и если вы хотите использовать любой из пакетов NuGet вы будете использовать этот , Более старая версия больше не разработана, поэтому любые новые функции не будут доступны в ней.

Вы уже указали на один из моих уроков. Полный список всех из них здесь Google C# tutorials

+0

Спасибо за понимание. Похоже, что я еще не узнал об Refresh_Token в OAuth 2.0 и убедился, что EITHER 1. это сохраняется где-то, извлекаемое в первом успешном длинном OR 2. что Authorization_Token отменяется в конце сеанса, заставляя пользователю снова войти в систему с нуля. ИЛИ 3. авторизация вручную отменяется с помощью https://security.google.com/settings/security/permissions, которая также вызывает интерактивный вход в систему в следующий раз. В настоящее время работает над тем, как безопасно хранить Refresh_Token. –

+0

У вас есть указатели на лучшую практику хранения Refresh_Token? Я нашел эту статью полезной для построения более общего понимания: https://developers.google.com/doubleclick-search/v2/configure –

+0

Клиентский lib должен позаботиться об этом для вас, используя filedatastore. это сохраняет новый токен в каталоге% appData%. вы можете сделать свою собственную реализацию Idatastore и сохранить ее там, где вам нравится база данных. это Java не C#, поэтому может вас больше смутить. – DaImTo