获取Django All Auth的Facebook用户名

0 投票
1 回答
888 浏览
提问于 2025-04-18 06:59

我用django all-auth做了一个应用程序。我设置了以下变量:

SITE_ID = 1
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 7
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "none"
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_SIGNUP_PASSWORD_VERIFICATION = True
SOCIALACCOUNT_AUTO_SIGNUP = True
LOGIN_REDIRECT_URL = "/home/"
ACCOUNT_LOGOUT_ON_GET = True
ACCOUNT_USERNAME_BLACKLIST =[]
ACCOUNT_USERNAME_REQUIRED = False

SOCIALACCOUNT_PROVIDERS = {
    'facebook': {
        'SCOPE': [
            "email",
            "user_friends"
            ],
        #'AUTH_PARAMS': { 'auth_type': 'reauthenticate' },
        'AUTH_PARAMS': { },
        'METHOD': 'oauth2'
        },
    }

问题是,django all-auth在用户通过Facebook注册时,并没有保存Facebook的用户名,而是只保存了名字。请问我该怎么做才能让allauth在注册时保存Facebook的用户名呢?

1 个回答

0

希望这对你来说还不算太晚。你需要做的是连接到 allauth.socialaccount.signals.social_account_added 这个信号,然后使用 Facebook Graph API 将 allauth 社交账户中的 id 转换成 Facebook 的用户名。

可以查看 django-allauth 的文档(信号部分)Facebook Graph API 中的用户账户部分

撰写回答