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のダイアログボックス...
どうすればこれを解決できますか?
Facebook LoginAPIにいくつかの変更を加えた後-FacebookのGraphAPI v2.4メールを取得するには、これらの行を追加する必要があります
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
'fields': 'id,name,email',
}
問題はFACEBOOK_EXTENDED_PERMISSIONSの使用にあると思います。
http://python-social-auth.readthedocs.org/en/latest/backends/facebook.html#oauth2 によると、次を使用する必要があります。
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
これをsettings.pyファイルに追加します
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
テストサイトでやっていますか?
ドキュメントをもう一度お読みください:[ https://python-social-auth.readthedocs.io/en/latest/backends/facebook.html#oauth2] [1]
それは言う:
FacebookのセットアップページでリダイレクトURLを定義する場合は、 http://127.0.0.1:80 または http:// localhost:80 を定義しないでください。テスト時に機能しない