Get /users/by-external/ lanzando error URL no encontrada después de la actualización

He estado actualizando mis foros de 1.6 a 3.1, lo que ha implicado moverme a un nuevo servidor y restaurar la copia de seguridad, luego volver a conectar todo.

Usamos SSO para iniciar sesión en ambos, lo cual todavía funciona.

Sin embargo, Discourse ahora parece lanzar errores en algunas áreas aleatorias que están causando un problema con la creación de cuentas desde el sitio web utilizando la API.
Estábamos usando el gem de ruby discourse_api en la versión 0.10.1, que actualicé a 0.48.1.

El error ocurre en
DiscourseApiService.new.user(self)

lo que llama a
resp = client.get("/users/by-external/#{user.id}")

lo que lanza el error
{"errors"=>["No se pudo encontrar la URL o el recurso solicitado."], "error_type"=>"not_found"}

Esto solía funcionar bien, pero ahora, por alguna razón, no se puede encontrar la URL.

Intenté degradar el gem discourse_api a 0.10.1 nuevamente, que es lo que estábamos ejecutando anteriormente, y funciona después de la etapa client.get, pero en su lugar falla en la siguiente llamada con el mismo error.

client.sync_sso(

{"errors"=>["No se pudo encontrar la URL o el recurso solicitado."], "error_type"=>"not_found"}

El endpoint cambió a /u/by-external/{external_id}.json en algún momento. Y se requiere una clave de API y un nombre de usuario para ese endpoint.

1 me gusta

ya pude resolverlo

Parece que actualizaron el código para lanzar un error si no se encuentra ningún usuario, así que tuve que usar rescue en lugar de comparar si era nil.

begin
    resp = client.get("/users/by-external/#{user.id}")
rescue DiscourseApi::NotFoundError => error
    puts error.response.body['errors'].first
    sync_user(user)
else
    resp.response.env.body['user']
end

Además, la respuesta ha cambiado de
resp['body']['user']
a
resp.response.env.body['user']

Mi último problema pendiente es que cuando llamo a client.sync_sso, ahora obtengo un error interno del servidor 500.

Los registros muestran
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "user_emails_pkey")

Sin embargo, si uso los mismos detalles en la terminal de Rails y ejecuto client.sync_sso, funciona perfectamente.

Solo para que lo sepas, no cambié el endpoint para que las partes anteriores volvieran a funcionar, así que parece que /users/by-external/ sigue siendo válido.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.