Вопрос по python – Несанкционированное взаимодействие с Google Calendar API v3

3

Я в той же ситуации, что иэтот парень (только в том, что у меня проблема с питоном): я пытаюсь получить данные, используя служебную учетную запись (используяэтот пример и после прочтенияэта запись в блоге так как мое приложение является приложением Google), но я получил ударlogin required ошибка, и я не могу понять, почему.

Позвольте мне представить это с целым примером:

In [1]: import httplib2                                                          
In [2]: from apiclient.discovery import build                                   
In [3]: from oauth2client.client import SignedJwtAssertionCredentials            
In [4]: f = open('abd45679ffg32343-privatekey.p12', 'rb')
In [5]: key = f.read()                                                          
In [6]: f.close()                                                               
In [7]: credentials = SignedJwtAssertionCredentials(                            
        '[email protected]', key,                     
        scope=['https://www.googleapis.com/auth/calendar',                      
               'https://www.googleapis.com/auth/calendar.readonly'])            
In [8]: http = httplib2.Http()                                                  
In [9]: http = credentials.authorize(http)                                      
In [10]: service = build(serviceName='calendar', version='v3', http=http,       
   ....:         developerKey='XcddfRgtyt676grggtT')        
2012-05-14 18:24:35,170 INFO  [root][MainThread] URL being requested: https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest                                                              
2012-05-14 18:24:35,170 INFO  [oauth2client.client][MainThread] Attempting refresh to obtain initial access_token
2012-05-14 18:24:35,179 INFO  [oauth2client.client][MainThread] Refresing access_token
In [11]: service.calendarList().list().execute()                                
2012-05-14 18:25:00,418 INFO  [root][MainThread] URL being requested https://www.googleapis.com/calendar/v3/users/me/calendarList?alt=json&key=XcddfRgtyt676grggtT          
---------------------------------------------------------------------------     
HttpError                                 Traceback (most recent call last)     
/home/mariano/Code/Kalendar/rest/kalendar/<ipython-input-12-0cb769615d74> in <module>()
----> 1 service.calendarList().list().execute()                                 
/home/mariano/Code/Kalendar/rest/env/local/lib/python2.7/site-packages/google_api_python_client-1.0beta8-py2.7.egg/apiclient/http.pyc in execute(self, http)                                     
387                                                                         
388       if resp.status >= 300:                                            
--> 389         raise HttpError(resp, content, self.uri)                        
390     return self.postproc(resp, content)                                 
391                                                                         
HttpError: <HttpError 403 when requesting https://www.googleapis.com/calendar/v3/users/me/calendarList?alt=json&key=XcddfRgtyt676grggtT returned "The user must be signed up for Google Calendar.">                   

Буду очень признателен за любые указания о том, почему это происходит и как его решить.

Может быть, вы не должны включать все учетные данные, ведь это общедоступный веб-сайт ... ChristopheD
Они все ненастоящие, не волнуйся. Спасибо за беспокойство Mariano

Ваш Ответ

3   ответа
0

что служебные учетные записи доступны для Calendar API. У учетной записи службы нет собственного календаря.

Это могло бы объяснить. Позвольте мне задать вопрос в трекере Mariano
Ты был прав: Googledevelopers.blogspot.com.ar / 2012/03 / ... Mariano
Я успешно заставил его работать раньше. Шиллингт показал этот ответ как ложный. wilbbe01
Это старая информация. Сервисные учетные записи действительно доступны для API Календаря (по крайней мере, протестировано с версией 3). Jude Osborn
1

Вам нужно изменить следующее утверждение:

credentials = SignedJwtAssertionCredentials('[email protected]', key, scope=['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly'])

К

credentials = SignedJwtAssertionCredentials('[email protected]', key, scope=['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly'], prn='[email protected]')
Привет, я пытаюсь сделать то же самое. Если адрес электронной почты владельца календаря - «[email protected]», это то, что я хотел бы ввести в поле «prn»? Знаете ли вы, должен ли календарь быть настроен каким-либо образом (например, сделать его общедоступным)? Я получаю сообщение об ошибке «Отказано в доступе», в котором говорится «Ошибка обновления токена OAuth2» (я использую библиотеку PHP). Мой календарь общедоступен. Благодарность Michael
1

доставить доступ к управлению доменом.

Сделайте, как сказали user1260486 и btspierre, и добавьте"[email protected]" конструктору дляSignedJWTAssertionCredentials.

Затем перейдите к управлению доменом и добавьте свойclient_id доступ к API.

Вот тебепрохождени об этом. Для области укажите"https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.readonly"

Похожие вопросы