【问题标题】:Using get_user_details in django-social-auth在 django-social-auth 中使用 get_user_details
【发布时间】:2012-10-17 07:31:48
【问题描述】:

我正在尝试使用 django-social-auth 来允许我的用户使用 Facebook 登录网站。我想保存用户的名字和姓氏以及电子邮件。但是,使用文档中的设置,它会保存用户名、电子邮件和身份验证令牌,但由于某种原因,它不会保存名字和姓氏。 查看代码,FacebookBackend 类提供了函数 get_user_details 但我不确定如何使用它。 似乎应该有一种简单的方法来获取这些信息。如果没有,总是有option to add an additional pipeline

【问题讨论】:

    标签: django django-socialauth


    【解决方案1】:

    默认管道已经检索了名字和姓氏。 facebook 后端调用get_user_details(第 47 行)设置名字和姓氏。

    默认管道甚至通过在每次成功登录时再次调用该方法来更新这些详细信息。可以通过编写自己的管道来关闭此行为,但不包括:

    'social_auth.backends.pipeline.user.update_user_details'
    

    那么要么您的 facebook 用户没有设置名字和姓氏,要么您的设置可能有误,您运行的是哪个版本?

    【讨论】:

    • 我使用的是 0.7.5 版。与social-auth相关的设置有:SOCIAL_AUTH_EXPIRATION = 'expires'AUTHENTICATION_BACKENDS = ('social_auth.backends.facebook.FacebookBackend',)
    • 其实我认为问题可能出在create_user 函数上。虽然上层确实获得了名字和姓氏,但用户仅使用用户名和电子邮件创建 -user': UserSocialAuth.create_user(username=username, email=email),
    • 我想我明白了,可以通过使用文档中提到的 SOCIAL_AUTH_PROTECTED_USER_FIELD 然后使用用户来完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多