ユーザーがすでにログインしている場合は、provider_login_urlタグを使用して別のアカウントに接続し、属性をprocess="connect"
に設定しました。ここで認証されたユーザーのために表示されたブロックに置くためのコードスニペットです:
{% load socialaccount %}
<p><a href="{% provider_login_url "facebook" process="connect" %}">Connect a facebook account</a></p>
<p><a href="{% provider_login_url "google" process="connect" %}">Connect a Google account</a></p>
設定SOCIALACCOUNT_QUERY_EMAIL=True
は、あなたのプロバイダの範囲に電子メールを求めることを忘れないでください:
SOCIALACCOUNT_PROVIDERS = \
{'facebook':
{'SCOPE': ['email', ],
'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
'METHOD': 'oauth2',
'LOCALE_FUNC': lambda request: 'pt_BR'},
'google':
{'SCOPE': ['https://www.googleapis.com/auth/userinfo.profile',
'email'],
'AUTH_PARAMS': {'access_type': 'online'}
},
}
また、電子メールアドレスを使用してアカウントを自動的に関連付けることができるかどうかを知りたい。私は、socialaccount_socialaccountテーブルの "extra_data"欄に、GoogleとFacebookの両方が"verified_email": true
を送信することがわかります。私にとっては、ログインと自動的なユーザビリティの向上を自動的に関連付けるだけで十分でしょう。
両方のソーシャルアカウントのメールアドレスが同じ場合は、自動リンク時に刺すことができます。私は同様の質問に答えました。それは役に立つかもしれません。http://stackoverflow.com/a/19443127/805427 – elssar