授予密码时使用电子邮件代替用户名

时间:2019-06-25 19:31:46

标签: flask oauth-2.0 authlib

我尝试在ResourceOwnerPasswordCredentialsGrant中使用电子邮件代替用户名 我希望请求像这样

curl -u client_id:client_secret -XPOST http://127.0.0.1:5000/oauth/token -F grant_type=password -F email=example@example.com -F password=password -F scope=read

但是我收到一个错误{“ error”:“ invalid_request”,“ error_description”:“请求中缺少\” username \“。”}

1 个答案:

答案 0 :(得分:0)

ResourceOwnerPasswordCredentialsGrant仅支持usernamepassword作为请求参数。如果您希望支持email,则最好将ResourceOwnerPasswordCredentialsGrant自定义为:

def authenticate_user(self, username, password):
    if '@' in username:
        user = get_user_by_email(username)
    else:
        user = get_user_by_username(username)
    if user.check_password(password):
        return user

您仍然应该使用参数username进行请求。