我尝试在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 \“。”}
答案 0 :(得分:0)
ResourceOwnerPasswordCredentialsGrant仅支持username
和password
作为请求参数。如果您希望支持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
进行请求。