Аутентификация API данных Google - PullRequest
6 голосов
/ 30 марта 2009

Я пытаюсь, чтобы приложение Django (НЕ использует движок приложений Google) получало данные из Контактов Google с помощью API данных Контактов Google. Просмотр документации по аутентификации , а также Data API Python для клиента документы

Первый шаг (AuthSubRequest) для получения одноразового токена работает нормально. Следующий шаг (AuthSubSessionToken) - обновление одноразового токена до токена сеанса. Вызов API Python UpgradeToSessionToken () просто не работал для меня, он дал мне исключение NonAuthSubToken:

gd_client = gdata.contacts.service.ContactsService()
gd_client.auth_token = authsub_token
gd_client.UpgradeToSessionToken() 

В качестве альтернативы я хочу, чтобы он работал, вручную создавая HTTP-запрос:

url = 'https://www.google.com/accounts/AuthSubSessionToken'
headers = {
               'Content-Type': 'application/x-www-form-urlencoded',
               'Authorization': 'AuthSub token=' + authsub_token,
               'User-Agent': 'Python/2.6.1',
               'Host': 'https://www.google.com', 
               'Accept': 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2',
               'Connection': 'keep-alive',
           }
req = urllib2.Request(url, None, headers)
response = urllib2.urlopen(req)

это дает мне другую ошибку:

Ошибка HTTP 302: HTTP-сервер вернул ошибку перенаправления, которая привела бы к бесконечному циклу. Последнее сообщение об ошибке 30x было: Временно перемещено

Что я здесь не так делаю? Буду признателен за помощь / совет / предложения с любым из методов, которые я пытаюсь использовать: вызов Python API (UpgradeToSessionToken) или создание HTTP-запроса вручную с помощью urllib2.

Ответы [ 3 ]

4 голосов
/ 02 апреля 2009

В соответствии с документацией 2.0 здесь есть набор примеров Python ...

Запуск образца кода

Полный рабочий пример клиента, содержащий весь пример кода, показанный в этом документе, доступен в дистрибутиве клиентской библиотеки Python в каталоге samples/contacts/contacts_example.py.

Образец клиента выполняет несколько операций с контактами, чтобы продемонстрировать использование API данных контактов.

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

1 голос
/ 04 апреля 2009

Существует четыре различных способа аутентификации. Неужели для вас так важно использовать AuthSub? Если вы не можете заставить AuthSub работать, рассмотрите подход ClientLogin . У меня не было проблем с тем, чтобы заставить это работать.

1 голос
/ 04 апреля 2009

У меня недавно была похожая проблема. Мой был исправлен, установив для «secure» значение «true».

  next = 'http://www.coolcalendarsite.com/welcome.pyc'
  scope = 'http://www.google.com/calendar/feeds/'
  secure = True
  session = True
  calendar_service = gdata.calendar.service.CalendarService()
...