gspread удостоверяване хвърляне на недостатъчно разрешение

С помощта на developers.google.com създадохме api потребител и изтеглихме идентификационни данни като json файл. Сега на моя macbook gspread удостоверяването работи добре, докато използвам credentials.json. при преместване на същата конфигурация към linux сървър на aws дава грешка 403 недостатъчно разрешение.

Pip и python версията са еднакви.

изключение

gspread.v4.exceptions.APIError: {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "Insufficient Permission"
   }
  ],
  "code": 403,
  "message": "Insufficient Permission"
 }
}

основен код

import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(creds)

sheet = client.open('MySheetName').sheet1

person Ahsan Naseem    schedule 13.03.2018    source източник
comment
Виждам подобен проблем на един от двата ми Linux сървъра. Единствената разлика, която мога в момента между моите сървъри, е каква версия на gspread са инсталирали, може би да проверите каква версия на gspread използват вашите две машини? Моля, уведомете ме как решавате!   -  person Weir_Doe    schedule 14.03.2018
comment
Върнах версията на gspread на моя Linux сървър, който изпитваше същия проблем и това изглежда реши проблема за мен, което предполага, че gspread 2.0 може да е виновен, надявам се, че вашият проблем е подобен. Това е, което изпълних: pip install 'gspread==0.6.2' --force-reinstall   -  person Weir_Doe    schedule 14.03.2018


Отговори (3)


Опитайте да промените вашата променлива scope на следното:

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

Уверете се, че Drive API е активиран в API конзолата.

gspread е надстроен и вече е базиран на API v4. По-бързо е, но изисква актуализации в обхвата.

Ето същия проблем: https://github.com/burnash/gspread/issues/512

person Burnash    schedule 15.03.2018
comment
работи за мен! първо ми даде „разрешение е отказано“ и връзка за активиране на първото изпълнение. след това проработи. - person Vincenzooo; 28.04.2018

Изглежда, че използвате акаунт за услуга. За да може акаунтът на услугата да има достъп до вашия sperad лист, той трябва да има достъп до него.

Уверете се, че споделяте листа с имейл адреса на акаунта на услугата, можете да направите това през уеб страницата на Google Drive

person DaImTo    schedule 13.03.2018
comment
Не мисля, че това може да е проблемът, OP казва, че акаунтът на услугата работи на Macbook, но не и на Linux сървъра, така че трябва да има достъп. - person Weir_Doe; 14.03.2018

АКО не можете да получите достъп дори след актуализиране на обхвата, опитайте да изпълните тази команда във вашия терминал:

sudo pip install 'gspread==0.6.2' --force-reinstall

person Yogamurthy    schedule 05.05.2018
comment
Бих разубедил хората да се понижават: gspread 0.6.2 използва по-старата версия на Sheets API (v3). Google силно препоръчва надграждане от v3, тъй като ще бъде отхвърлено. Вижте developers.google.com/sheets/api/v3 - person Burnash; 11.05.2018