Подтвердить что ты не робот

HTTPError 403 (Запрещено) с Django и python-social-auth, подключающимся к Google с помощью OAuth2

Используя python-social-auth, я получаю сообщение об ошибке 403: Forbiden после принятия доступа из google

EDIT: Я недавно (2017) имел ту же ошибку, но под новым сообщением: 401 Client Error: Unauthorized for url: https://accounts.google.com/o/oauth2/token

4b9b3361

Ответ 1

Вам нужно добавить Google+ API список разрешенных API-интерфейсов в консоли разработчика Google (под APIs)

Примечание. Если вы хотите увидеть реальное сообщение об ошибке, используйте трассировку, чтобы посмотреть содержимое переменной response (response.text). Я использую werkzeug для этого (django-extensions + python manage.py runserver_plus).

Ответ 2

Спасибо. Я использовал этот python-social-auth учебник по искусству и логике, но не смог пройти мимо 403: Запрещенный HTTPError в /complete/google -oauth2/пока не включите Google+ API, как указано выше , и подождите несколько минут, чтобы Google включил его.

Кроме того, мне пришлось разместить шаблоны в каталоге шаблонов и установить TEMPLATE_DIRS = ('/path/to/psa_test/thirdauth/templates/',) в settings.py.

Надеюсь, это поможет кому-то на этом пути. В общем, это заняло около 6 часов, чтобы понять это. Не так уж плохо, я счастлив.

Ответ 3

Для меня я использовал область полного URI, которая устарела Google с 1 сентября 2014 года, это упоминается здесь в документации python-social-auth.

http://psa.matiasaguirre.net/docs/backends/google.html#google-oauth2

Google обесценивает полные URL-адреса с 1 сентября 2014 года в пользу Google+ API и недавно введенных более коротких имен областей. Но python-social-auth уже ввел изменение областей в e3525187, который был выпущен в версии 0.14.

Однако, если вы не хотите включать API Google+ по какой-либо причине и хотите продолжить работу с полной областью полного uri, вам необходимо выполнить шаги, указанные в той же ссылке:

# Google OAuth2 (google-oauth2)
SOCIAL_AUTH_GOOGLE_OAUTH2_IGNORE_DEFAULT_SCOPE = True
SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPE = [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile'
]

# Google+ SignIn (google-plus)
SOCIAL_AUTH_GOOGLE_PLUS_IGNORE_DEFAULT_SCOPE = True
SOCIAL_AUTH_GOOGLE_PLUS_SCOPE = [
'https://www.googleapis.com/auth/plus.login',
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile'
]

SOCIAL_AUTH_GOOGLE_OAUTH2_USE_DEPRECATED_API = True
SOCIAL_AUTH_GOOGLE_PLUS_USE_DEPRECATED_API = True

Это сработало для меня, поскольку я не хотел включать API Google+ на данный момент.