Попытка доступа к Google Sheets и получение сообщения об ошибке «Неожиданный тип учетных данных» - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь запустить следующий код для доступа к Google Sheets.

import os
os.getcwd()
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd

scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

credentials = ServiceAccountCredentials.from_json_keyfile_name('client_secret_406147946600-na19mdik9a4571623b4kdp30h5354el0.apps.googleusercontent.com.json', scope) # Your json file here
credentials

Я получил файл. json из «Идентификаторов клиента OAuth 2.0». Все, что я сделал, это щелкнул «СКАЧАТЬ JSON», и я поместил файл в папку по умолчанию с именем «C: \ Users \ ryans». Когда я запускаю код, я получаю эту ошибку.

Traceback (most recent call last):

  File "<ipython-input-17-26266215508f>", line 9, in <module>
    credentials = ServiceAccountCredentials.from_json_keyfile_name('client_secret_406147946600-na19mdik9a4571623b4kdp30h5354el0.apps.googleusercontent.com.json', scope) # Your json file here

  File "C:\Users\ryans\Anaconda3\lib\site-packages\oauth2client\service_account.py", line 223, in from_json_keyfile_name
    revoke_uri=revoke_uri)

  File "C:\Users\ryans\Anaconda3\lib\site-packages\oauth2client\service_account.py", line 172, in _from_parsed_json_keyfile
    'Expected', client.SERVICE_ACCOUNT)

ValueError: ('Unexpected credentials type', None, 'Expected', 'service_account')

Все, что я делаю, это даю ему тот же файл, что и мне. Вот и все. Если я изменю имя на «service_account. json», я получу следующую ошибку:

ValueError: ('Unexpected credentials type', None, 'Expected', 'service_account')

Все, что я делаю, - это именно то, что он говорит мне делать. Я не могу понять, в чем здесь проблема. Это похоже на 2-секундную работу (копирование / вставка), но здесь вообще ничего не работает. Я видел другой пример в Интернете, и другие люди утверждали, что все работает нормально, но у меня ничего не работает, независимо от того, что я делаю. Есть какие-то особые настройки безопасности или что-то подобное? Могу ли я просто отключить защиту, если она вообще существует?

1 Ответ

2 голосов
/ 12 марта 2020
  • Вы хотите использовать Sheets API, используя gspread со служебной учетной записью.

Если я правильно понял, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Проблема и решение:

В вашем вопросе я могу подтвердить следующее.

Я получил . json файл из «Идентификаторов клиента OAuth 2.0». Все, что я сделал, это щелкнул «СКАЧАТЬ JSON», и я поместил файл в папку по умолчанию с именем «C: \ Users \ ryans». Когда я запускаю код, я получаю эту ошибку.

В этом случае я думал, что загруженный файл не является учетными данными учетной записи службы. Это используется для процесса OAuth2. Я думаю, что идентификатор клиента и секрет клиента включены в файл. Когда я проверил этот файл для вашего сценария, я смог подтвердить, что возникла та же проблема.

Поэтому, пожалуйста, создайте учетную запись службы и получите файл JSON следующим образом.

  • В Google Cloud Platform вы можете создать учетную запись службы, как показано на следующем изображении.

    enter image description here

  • Или также Вы можете создать учетную запись службы, открыв https://console.cloud.google.com/iam-admin/serviceaccounts/create.

Примечание:

Существуют ли какие-то специальные настройки безопасности или что-то в этом роде? Могу ли я просто отключить некоторую безопасность, если она вообще существует?

Вы также можете добиться этого. Вы также можете увидеть официальный документ .

Список литературы:

Если я неправильно понял вашу ситуацию, и это не то направление, которое вы хотите, я приношу свои извинения.

...