0

私はpython-social-authを使用し ており、パイプラインは次のとおりです。

'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',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',

get_usernameユーザーにメールアドレスを尋ねたい場所の後にフォームを追加したいと思います。バックエンド プロバイダーから取得しません。そのメールアドレスを入れて、アカウントをそのメールアドレスに関連付けたいです。

これはどのように可能ですか?機能はどうあるべきですか?

4

2 に答える 2

1

関数:

from django.shortcuts import render

from social.pipeline.partial import partial


@partial
def require_email(strategy, backend, details, user=None, is_new=False, *args, **kwargs):
    if is_new and not details.get('email'):
        email = strategy.request_data().get('email')
        if email:
            details['email'] = email
        else:
            return render(strategy.request, 'require_email.html', backend=backend.name)

テンプレート:

<form method="post" action="/complete/{{ backend }}/">{% csrf_token %}
    <label for="email">Email:</label>        
    <input id="email" type="email" placeholder="Your email address">
    <button>Submit</button>
</form>

これでうまくいくはずです。

于 2014-10-22T12:44:41.717 に答える