Pythonソーシャル認証をdjangoプロジェクトに統合する方法を学ぼうとしています。
テストアプリケーションにログインできるため、動作しているように見えますが、エラーが発生しないため、ユーザーがデータベースに保存されず、その理由がわかりません。
ここに私のconfがあります
INSTALLED_APPS = (
...
'social.apps.django_app.default',
'messaging'
)
AUTHENTICATION_BACKENDS = (
'social.backends.facebook.FacebookOAuth2',
'social.backends.email.EmailAuth',
'django.contrib.auth.backends.ModelBackend',
)
SOCIAL_AUTH_FACEBOOK_KEY='XX'
SOCIAL_AUTH_FACEBOOK_SECRET='YYY'
FACEBOOK_EXTENDED_PERMISSIONS = ['email']
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/home/'
LOGOUT_REDIRECT_URL = '/'
URL_PATH = ''
SOCIAL_AUTH_STRATEGY = 'social.strategies.django_strategy.DjangoStrategy'
SOCIAL_AUTH_STORAGE = 'social.apps.django_app.default.models.DjangoStorage'
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'social.apps.django_app.context_processors.backends',
'social.apps.django_app.context_processors.login_redirect',
)
私の考えは、ユーザーにdjangoのデフォルトモデルを使用することだけなので、拡張機能は定義していません。
ログイン時にユーザーが作成されない理由を知っていますか?
アップデート
少なくとも私には、奇妙に見えることに気づきました。syncdb を実行するときに作成される最初の管理者ユーザーは、アプリケーションのテストに使用している Facebook アカウントと同じ名前と姓を持っています。もう使わないだろうし、別のユーザーを作る必要があると思っていたのですが、データベースを確認したところauth_user.last_login
、facebook でのログインに合わせて更新されていました。
そこで、次の 2 つの質問があります。
- python social auth は、同じ名前と姓を持つユーザーが既に auth_user に存在するかどうかをチェックし、別のユーザーを作成する代わりにその特定のユーザーを使用するのは正しいですか?
- Facebook のユーザー Foo Bar と Twitter のユーザー Foo Bar が同一人物ではない状況を回避するにはどうすればよいですか?