2012-02-19 8 views
4

私はdjango-social-authをインストールすることができましたが、私は実際にユーザー名を作成するためにfacebookから取得したデータを実際に使うことができます。フィールド...django social auth facebook dataを使って

私はジャンゴ・社会的-AUTHの設定では、私は[...] SOCIAL_AUTH_DEFAULT_USERNAME =「new_social_auth_user」とFACEBOOK_EXTENDED_PERMISSIONS =を設定することができますが、私のコードでは、私はプラグインできる場所私はundestrandしていないことを知っていますこのデータはランダムなユーザー名を持たないようにします。

+2

を第一に、あなたはより多くを受け入れてみてくださいする必要があります可能であればあなたの質問に答えます。人々はあなたを助けてくれるでしょう。この質問にご参加ください。 __after__彼らはfacebookで承認しましたが、そのユーザ名はDBに保存されますか? –

+0

まさに!私は答えを受け入れるということを理解していませんでした。私は確かにより多くの答えを受け入れるだろう、私は1つの答えを受け入れる必要があると思った。ありがとうございました。 – freethrow

+0

質問ごとに1つの回答しか受け入れることはできません。実際に正しい場合にのみ行うべきですが、問題を見つけた場合は自分の回答を受け入れることもできます。 –

答えて

13

django-social-authは、認証プロセスの特定のステップでカスタム関数を挿入できるようにするパイプライン(これは試していたときにはなかったので、これは新しい機能のようです)を実装しています。 the docs hereexample pipline functionを確認してください。ご自身のニーズoを応じてあなたのcustom_create_user機能はデフォルトcreate_userをラップ

SOCIAL_AUTH_PIPELINE = (
    'social_auth.backends.pipeline.social.social_auth_user', 
    'social_auth.backends.pipeline.associate.associate_by_email', 
    'social_auth.backends.pipeline.user.get_username', 

    'app.pipeline.custom_create_user', 

    'social_auth.backends.pipeline.social.associate_user', 
    'social_auth.backends.pipeline.social.load_extra_data', 
    'social_auth.backends.pipeline.user.update_user_details' 
) 

とユーザー名を作成します:

だから、関数を書くことができ

from social_auth.backends.pipeline.user import create_user 
def custom_create_user(request, *args, **kwargs): 
    user = *kwargs.get('user', None) 
    # Do something with username 
    return create_user(request, args, kwargs) 
+0

これはまさに私が必要としていたものです。奇妙なことに、私はドキュメントを読んで、そこからそれを理解することはできませんでしたが、それは非常に簡単です。私はパイプラインからFacebookの余分なデータを使用することができますか、別のFacebookのdjangoアプリを使うべきですか(私は事を複雑にしたくないでしょう)。 – freethrow

関連する問題