17

django にpython-social-authを実装しようとしています。

ユーザーに Facebook で認証してメールを保存してもらいたい。

ユーザーを認証できますが、電子メールの拡張アクセス許可が Facebook 認証ボックスに表示されず、電子メールがデータベースに保存されません。

settings.py には次のようなものがあります。

SOCIAL_AUTH_FACEBOOK_KEY='xxx'
SOCIAL_AUTH_FACEBOOK_SECRET='xxx'
FACEBOOK_EXTENDED_PERMISSIONS = ['email']

AUTHENTICATION_BACKENDS = (
    'social.backends.facebook.FacebookOAuth2',
    'social.backends.email.EmailAuth',
    'django.contrib.auth.backends.ModelBackend',
)

LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/done/'
LOGOUT_REDIRECT_URL = '/'
URL_PATH = ''
SOCIAL_AUTH_STRATEGY = 'social.strategies.django_strategy.DjangoStrategy'
SOCIAL_AUTH_STORAGE = 'social.apps.django_app.default.models.DjangoStorage'

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',
    'social.pipeline.social_auth.associate_by_email',
    # 'users.pipeline.require_email',
    'social.pipeline.mail.mail_validation',
    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details'
)

Facebookのダイアログボックス...

ここに画像の説明を入力

どうすればこれを解決できますか?

4

4 に答える 4

54

Facebook ログイン API - Facebook の Graph API v2.4 にいくつかの変更が加えられた後、メールを取得するには、これらの行を追加する必要があります。

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
    'fields': 'id,name,email', 
}
于 2016-01-07T09:27:52.593 に答える
0

これを settings.py ファイルに追加します

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
于 2015-08-19T03:26:40.543 に答える