2015-03-13 3 views
3

Я работаю над программой Ruby для доступа к моему приводу Google, чтобы получить мои файлы. Я хочу использовать соединение «сервер-сервер», чтобы люди не могли принимать разрешения, поэтому я использую ключ p12, сгенерированный для Идентификатор клиента учетной записи службы сервиса. Соединение в порядке, но я вставлял файл успешно.API Google Диска не отображает файл с моего диска (Ruby)

Моя проблема заключается в том, когда я пытаюсь перечислить все мои файлы: вызов работает хорошо, но я получаю только 2 файла: ранее вставленный документ и документ под названием «Как начать с диска» (у меня есть много другого файла на моем, как документы, электронные таблицы, презентации, фотографии и т. д.).

Я создал свой ключ с моей учетной записью google, но я не могу получить доступ к своим файлам. Кроме того, документ, который я вставил с моей программой, не отображается на моем диске Google среди моих файлов.

Есть ли что-то, что я пропустил по API? Какой файл я получаю вместо своего? Это действительно так, как будто я не на той же учетной записи Google Диска. Вот код, я использую, чтобы перечислить мои файлы:

# Prepare the OAuth client/Service Account 
client = Google::APIClient.new(application_name: 'Google Drive Ruby test', application_version: '0.0.1') 
key = Google::APIClient::KeyUtils.load_from_pkcs12('key.p12', 'notasecret') 
client.authorization = Signet::OAuth2::Client.new(
    :token_credential_uri => 'https://accounts.google.com/o/oauth2/token', 
    :audience => 'https://accounts.google.com/o/oauth2/token', 
    :scope => 'https://www.googleapis.com/auth/drive', 
    :issuer => '***@developer.gserviceaccount.com', 
    :signing_key => key) 

client.authorization.fetch_access_token! 

# Get the Drive API 
drive = client.discovered_api('drive', 'v2') 

# Upload a file 
api_result = client.execute(
    :api_method => drive.files.list, 
    :parameters => []) 

Большое спасибо!

Julian

+0

вставьте код, делающий файлы.list и в идеале трассировку http. Вы правильно следуете nextPageToken? Когда вы говорите «мои файлы», вы * понимаете, что учетная запись службы НЕ является вашими файлами, а отдельной учетной записью? – pinoyyid

+0

Это полный код, который я тестирую. Я просто печатаю объект api_result.data. Когда я говорю свои файлы, я хочу получить доступ к электронным таблицам или документам, которые я создал через мой браузер. –

+1

А, это проблема. Учетная запись службы * не * ваша учетная запись накопителя, которую вы обновили бы через ваш браузер. См. Http://stackoverflow.com/questions/28784575/google-drive-help-required-access-to-own-drive-account/28789719#28789719 и http://stackoverflow.com/questions/19766912/how-do -i-авторизированного-а-фон-веб-приложение-без вмешательства пользователя каноническим. Кстати, в вашем коде комментарий выше files.list говорит «Загрузите файл», поэтому я пропустил его в первый раз. – pinoyyid

ответ

2

Ahh, в этом проблема. Учетная запись службы не является учетной записью вашего Диска, которую вы обновили бы через ваш браузер. См. Google Drive help required access to own Drive account и How do I authorise an app (web or installed) without user intervention? (canonical ?). Кстати, в вашем коде комментарий выше files.list говорит «Загрузите файл», поэтому я пропустил его в первый раз :-)

Смежные вопросы