dailyLimitExceededUnreg: Превышен дневной лимит для использования без аутентификации.Продолжение использования требует регистрации - PullRequest
0 голосов
/ 31 января 2019

Я настроил небольшой скрипт для экспорта первой вкладки Google Sheet как csv через Google Drive API.Я могу выполнить скрипт один раз, и он работает.Во время этого выполнения мне предоставляется URL-адрес, который позволяет мне проходить аутентификацию в Интернете и дает мне код.Этот код хранится в файле token.yaml.Затем сценарий успешно экспортирует мой лист.

При повторном выполнении сценария появляется сообщение об ошибке

dailyLimitExceededUnreg: Daily Limit for Unauthenticated Use Exceeded.
Continued use requires signup. (Google::Apis::ClientError)

При удалении файла token.yaml, который был создан во время моего первого(успешная) попытка, я могу выполнить скрипт снова, в т.ч.аутентификация как описано выше.Когда я выполняю сценарий в другой раз, я возвращаюсь к ошибке.

require 'google/apis/drive_v3'
require 'googleauth'
require 'googleauth/stores/file_token_store'
require 'fileutils'

OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'.freeze
APPLICATION_NAME = 'Maker'.freeze
CREDENTIALS_PATH = 'credentials.json'.freeze

FILE_ID = '<my-file-id>'

# The file token.yaml stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
#
# copied from https://developers.google.com/drive/api/v3/quickstart/ruby
TOKEN_PATH = 'token.yaml'.freeze
SCOPE = Google::Apis::DriveV3::AUTH_DRIVE

##
# Ensure valid credentials, either by restoring from the saved credentials
# files or initiating an OAuth2 authorization. If authorization is required,
# the user's default browser will be launched to approve the request.
#
# @return [Google::Auth::UserRefreshCredentials] OAuth2 credentials
#
# copied from https://developers.google.com/drive/api/v3/quickstart/ruby
def authorize
  client_id = Google::Auth::ClientId.from_file CREDENTIALS_PATH
  token_store = Google::Auth::Stores::FileTokenStore.new file: TOKEN_PATH
  authorizer = Google::Auth::UserAuthorizer.new client_id, SCOPE, token_store
  user_id = 'default'
  credentials = authorizer.get_credentials user_id
  create_credentials(authorizer, user_id) if credentials.nil?
end

def create_credentials(authorizer, user_id)
  url = authorizer.get_authorization_url base_url: OOB_URI
  puts 'Open the following URL in the browser and enter the ' \
         "resulting code after authorization:\n" + url
  code = STDIN.gets
  authorizer.get_and_store_credentials_from_code user_id: user_id,
                                                 code: code,
                                                 base_url: OOB_URI
end

# copied from https://developers.google.com/drive/api/v3/about-auth
def download_csv
  service = Google::Apis::DriveV3::DriveService.new
  service.client_options.application_name = APPLICATION_NAME
  service.authorization = authorize
  service.export_file(FILE_ID, 'text/csv') #only downloading first sheet
end

puts download_csv

1 Ответ

0 голосов
/ 01 февраля 2019

Пример быстрого запуска Google (https://developers.google.com/drive/api/v3/quickstart/ruby) ссылался на их версию API 0.8, которая устарела.Есть более новая версия 0.11.Когда я это установил, все работало безупречно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...