Аутентификация API данных Google
-
22-08-2019 - |
Вопрос
Я пытаюсь заставить мое приложение Django (НЕ использовать движок приложений Google) получать данные из контактов Google с помощью API данных контактов Google.Проходя через документация по аутентификации а также Документация клиента 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 было:Временно переехал
Что я здесь делаю не так?Я был бы признателен за помощь/совет/предложение по любому из методов, которые я пытаюсь использовать:Вызов API Python (UpgradeToSessionToken) или создание HTTP-запроса вручную с помощью urllib2.
Решение
Согласно документации 2.0 здесь есть набор примеров Python...
Запуск примера кода
Полный рабочий пример клиента, содержащий весь пример кода, показанный в этом документе, доступен в дистрибутиве клиентской библиотеки Python в каталоге
samples/contacts/contacts_example.py
.Пример клиента выполняет несколько операций с контактами, чтобы продемонстрировать использование API данных контактов.
Надеюсь, это укажет вам правильное направление.
Другие советы
Недавно у меня возникла похожая проблема.Мой был исправлен, установив для параметра «безопасность» значение «истина».
next = 'http://www.coolcalendarsite.com/welcome.pyc'
scope = 'http://www.google.com/calendar/feeds/'
secure = True
session = True
calendar_service = gdata.calendar.service.CalendarService()
Существует четыре различных способа аутентификации.Неужели для вас так важно использовать AuthSub?Если вы не можете заставить AuthSub работать, рассмотрите КлиентЛогин подход.У меня не было проблем с тем, чтобы это работало.