1

Я пытаюсь следовать Tutorial: Adding Facebook/Twitter/Google Authentication to a Django Application. Единственное, что я делаю по-другому, это то, что я запускаю DjangoAppEngine на сервере разработки Google App Engine, иначе все будет точно в соответствии с руководством.Ошибка python-social-auth в Google App Engine

Когда я получаю к шагу 4 и на самом деле пытаются проверить подлинность с Facebook, я получаю сообщение об ошибке выполнения:

error('illegal IP address string passed to inet_pton',) 

Request Method: GET 
Request URL: http://localtest.com:8080/o/complete/facebook/?redirect_state=FG4K...UG1k 
Django Version: 1.6.11 
Exception Type: RuntimeError 
Exception Location: /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py in _MakeRealSyncCall, line 235 
Python Executable: /usr/local/opt/python/bin/python2.7 
Python Version: 2.7.11 

Очевидно ФБ проходящее утверждение обратно в мое приложение, так как запрос URL включает в себя функцию обратного вызова дорожка.

Похоже, что что-то в GoogleAppEngineLauncher пытается найти адрес и не получает нужные данные? Я не совсем уверен.

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

Кто-нибудь знает, почему я получаю эту ошибку и что могу сделать, чтобы исправить ее?

ответ

1

UPDATE: оригинальный ответ (начиная с «ОДНАКО») больше не надо, просто использовать requests 2.10.0 или выше, urllib3 1.15.1 или выше, и requests_toolbelt 0.6.2 или выше и выполните следующие действия в основном():

from requests_toolbelt.adapters import appengine 
appengine.monkeypatch() 

ОДНАКО, если вы используете старые версии запросов и/или urllib3, то вам нужно патчи ниже:

Это может быть достигнуто с помощью исправленную версию requests вместе с пакетом requests-toolbelt. Темы, которые применяются:

Я применил все это и теперь python-social-auth и facebook-sdk работать как в локальных, test (dev-сервер) и производство (полный App Engine).

+0

, какие исправления вы применили, точно? – kzh

+0

Я подтверждаю, что это работает. Ключ - это последняя ссылка: https://github.com/sigmavirus24/requests-toolbelt/pull/119 – kzh

+1

Надеемся, что все эти патчи скоро будут загружены в официальные версии этих библиотек, и никаких исправлений не потребуется :) – seawolf

1

Это происходит потому, что SDK для Facebook зависит от огромной библиотеки requests. Однако requests не работает на Google App Engine, так как на платформе есть некоторые ограничения. Вы должны использовать свои API-интерфейсы urlfetch для извлечения внешнего содержимого в Google App Engine.

Да, официальный SDK Facebook не будет работать. Вы должны бросить свое собственное решение или найти тот, который работает. SimpleAuth - одно из решений, которое, как известно, сработало.

+0

Ну, это отстой ... но, в общем, я вполне доволен песочницей, просто не понял, что это было. Хорошо, 'SimpleAuth'. Благодаря! – seawolf

+0

'запросы' теперь работают под App Engine (с несколькими исправлениями) ... Я заменил ответ, чтобы включить ссылки на соответствующие документы. – seawolf

0

В ваших продаваемых библиотеках убедитесь, что у вас есть request_toolbelt. (pip install -t lib requests_toolbelt). Затем поддержка «monkeypatch» appengine до того, как python-social-auth когда-либо вызовет запросы. В моем проекте/wsgi.ру, я добавил следующие строки:

from requests_toolbelt.adapters import appengine 
appengine.monkeypatch() 

питон-социально-аутентификации зависит от requests, поэтому он должен также существовать в каталоге производителя.

Вы также должны убедиться, что используете версию запросов> = 2.10.0. Это еще не выпущено, так что вы можете подделать его. Измените lib/requests/__init__.py так, чтобы __build__ = 0x021000. Вы также должны обновить упакованную версию urllib3 в каталоге lib/requests/packages/ до последней версии.

Это то, что сработало для меня.

+0

Я пробовал все это, и это не сработало для меня, с GAE SDK 1.9.36 – Bodhi

+0

работает для меня! с urllib3 1.15.1. [подробнее см. ниже.] (http://stackoverflow.com/questions/34574740/python-social-auth-failure-on-google-app-engine/35944044#comment61501928_35109359) – ryan

+0

Это не работало для меня с последним GAE SDK. Я вернулась к версии около января 2016 года (gcloud 94.0.0, GAE 1.9.31), при которой она начала работать –

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

  • Нет связанных вопросов^_^