• en
  • Language: ru
  • Documentation version: 0.1

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.