Facebook¶
OAuth2¶
Facebook использует OAuth2 для своего процесса аутентификации. Дополнительная документация на сайте Facebook development resources:
Зарегистрируйте новое приложение по адресу Facebook App Creation, не используйте
localhost
, какApp Domains
иSite URL
, поскольку Facebook их не разрешит. Используйте заполнитель, напримерmyapp.com
, и определите этот домен в вашем/etc/hosts
или подобном файле.заполнить
App Id
иApp Secret
значениями в values:SOCIAL_AUTH_FACEBOOK_KEY = '' SOCIAL_AUTH_FACEBOOK_SECRET = ''
Определите
SOCIAL_AUTH_FACEBOOK_SCOPE
для получения дополнительных разрешений от facebook. Email не отправляется по умолчанию, чтобы получить его, необходимо запросить разрешениеemail
:SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
Определите
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS
для передачи дополнительных параметров на https://graph.facebook.com/me при сборе данных профиля пользователя (необходимо явно запрашивать поля типаemail
, используя ключfields
):SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = { 'locale': 'ru_RU', 'fields': 'id, name, email, age_range' }
Если вы определяете URL перенаправления на странице настройки Facebook, убедитесь, что вы не определяете http://127.0.0.1:8000 или http://localhost:8000, потому что они не будут работать при тестировании. Вместо этого я определяю http://myapp.com и устанавливаю связку на /etc/hosts
.
В настоящее время бэкенд использует Facebook API версии 2.9, при необходимости это значение может быть переопределено следующим параметром:
SOCIAL_AUTH_FACEBOOK_API_VERSION = '2.10'
Приложение Canvas¶
Если вам нужно выполнить аутентификацию из приложения Facebook Canvas:
Создайте свое приложение canvas на сайте http://developers.facebook.com/apps.
В настройках приложения Facebook укажите URL вашего холста
mysite.com/fb
(текущее значение по умолчанию)Настройте параметры Python Social Auth и пространство имен приложения:
SOCIAL_AUTH_FACEBOOK_APP_KEY = '' SOCIAL_AUTH_FACEBOOK_APP_SECRET = '' SOCIAL_AUTH_FACEBOOK_APP_NAMESPACE = ''
Запустите ваш тестовый сервер на порту 80 (используйте sudo или nginx или apache), чтобы браузер мог загрузить его, когда Facebook вызовет URL холста
Откройте свою страницу Facebook через http://apps.facebook.com/app_namespace или лучше через http://www.facebook.com/pages/user-name/user-id?sk=app_app-id.
После этого вы увидите эту страницу в правильном виде и сможете подключиться к приложению и автоматически войти в систему после подключения.
Предоставьте шаблон для рендеринга, в нем должен быть этот фрагмент JavaScript (или аналогичный):
<script type="text/javascript"> var domain = 'https://apps.facebook.com/', redirectURI = domain + {{ FACEBOOK_APP_NAMESPACE }} + '/'; window.top.location = 'https://www.facebook.com/dialog/oauth/' + '?client_id={{ FACEBOOK_KEY }}' + '&redirect_uri=' + encodeURIComponent(redirectURI) + '&scope={{ FACEBOOK_EXTENDED_PERMISSIONS }}'; </script>
Больше информации по теме на сайте Facebook Canvas Application Authentication.