Matraz de authlib de Python: ¿cómo hacer correctamente el flujo de concesión de contraseña?

Oct 26 2020

Tengo un inicio de sesión de "flujo de concesión de contraseña" con la integración del matraz authlib funcionando bien:

@app.route('/login', methods=('GET', 'POST'))
def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        try:
            token = oauth.myOauth2.fetch_access_token(username=request.form.get('username'),
                                                      password=request.form.get('password'))
        except OAuthError as e:
            if e.description:
                flash(e.description)
                return render_template('login.html')
            raise

Sin embargo, en una pregunta anterior se me recomendó que no lo usara fetch_access_tokenasí, ya que no está documentado para la integración del matraz, y que lo use authorize_access_tokenen su lugar. Esto falla con un errorwerkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand. KeyError: 'code'

Entonces, ¿cuál es la forma correcta de hacer el "flujo de concesión de contraseña" con la integración del matraz?
Cualquier consejo es bienvenido.

Respuestas

Alias_Knagg Nov 05 2020 at 14:57

Para el registro, @lepture confirmó en los comentarios anteriores que este uso de fetch_access_tokenestá bien.
Ingresando esta respuesta aquí para poder marcar la pregunta como respondida.