3

Я в той же ситуации, что и this guy (только моя проблема связана с python): Я пытаюсь получить данные с помощью учетной записи службы (используя this example и после прочтения this blog entry, так как мое приложение это приложение для Google), но я получаю ошибку , и мне нужна ошибка, и я не понимаю, почему.Несанкционированное взаимодействие с API календаря Google v3

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

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.">     

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

+0

Возможно, вы не должны включать в себя все учетные данные, это общедоступный веб-сайт ... – ChristopheD

+1

Все они поддельные, не волнуйтесь. Спасибо за беспокойство. – Mariano

ответ

0

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

+0

Это могло бы объяснить это. Позвольте мне спросить в проблеме трекер – Mariano

+0

Вы были правы: http://googledevelopers.blogspot.com.ar/2012/03/service-accounts-have-arrived.html – Mariano

+0

Я успешно получил его для работы ранее. Schillingt показал, что этот ответ является ложным. – wilbbe01

1

Учетные записи службы доступны и работают с API календаря для меня.

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

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]') 
+1

Привет, я пытаюсь сделать то же самое. Если адрес электронной почты владельца календаря - «[email protected]», это то, что я хотел бы ввести в поле «prn»? Знаете ли вы, что календар должен быть настроен каким-либо образом (например, сделать его общедоступным)? Я продолжаю получать сообщение об ошибке «отказ в доступе», в котором говорится: «Ошибка обновления токена OAuth2» (я использую библиотеку PHP). Мой календарь настроен на публичный. Благодарю. – Michael

1

Счета службы работают с Календарным API. Вы также должны предоставить доступ к управлению доменами.

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

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

Об этом walkthrough. Для области укажите "https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.readonly"

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