Python – создать альбом с ошибкой Picasa

Google недавно перешел на OAuth2.0, и нам нужно изменить наши предыдущие методы аутентификации (например, с ProgrammaticLogin на OAuth2.0).

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

    client = PhotosService(email="xxxx")    
   ...
   ...
   ...
   #After successfull OAuth 
   album = client.InsertAlbum(title="Temp album", summary="My summary", access="public")

Эта строка вызывает следующую ошибку.

  File "/Users/mac/destipak/env/lib/python2.7/site-packages/gdata/photos/service.py", line 358, in InsertAlbum
    raise GooglePhotosException(e.args[0])
gdata.photos.service.GooglePhotosException: (403, 'Forbidden', 'Modification only allowed with api authentication.')

person A.J.    schedule 29.05.2015    source источник


Ответы (1)


Я не был совсем уверен, но действительно ли вы изменили OAuth2? Я использовал следующий код, и он сработал.

def OAuth2Login(client_secrets, credential_store, email):
scope='https://picasaweb.google.com/data/'
user_agent='testingApp'

storage = Storage(credential_store)
credentials = storage.get()
if credentials is None or credentials.invalid:
    flow = flow_from_clientsecrets(client_secrets, scope=scope, redirect_uri='urn:ietf:wg:oauth:2.0:oob')
    uri = flow.step1_get_authorize_url()
    webbrowser.open(uri)
    code = raw_input('Enter the authentication code: ').strip()
    credentials = flow.step2_exchange(code)
    storage.put(credentials)

if (credentials.token_expiry - datetime.utcnow()) < timedelta(minutes=5):
    http = httplib2.Http()
    http = credentials.authorize(http)
    credentials.refresh(http)

gd_client = gdata.photos.service.PhotosService(source=user_agent,
                                           email=email,
                                           additional_headers={'Authorization' : 'Bearer %s' % credentials.access_token})

return gd_client
album = gd_client.InsertAlbum('test', 'My Test Album', access='protected')

Мне пришлось создать ключ API на портале разработчиков Google и загрузить секрет json, но после этого я смог успешно создать альбом. Этот репозиторий оказался очень полезным https://github.com/MicOestergaard/picasawebuploader.

person goteamtim    schedule 04.02.2016