Get /users/by-external/ restituisce errore URL non trovato dopo l'aggiornamento

Sto aggiornando i miei forum da 1.6 a 3.1, il che ha comportato lo spostamento su un nuovo server, il ripristino del backup e quindi il ricollegamento di tutto.

Utilizziamo SSO per accedere a entrambi, il che funziona ancora.

Tuttavia, Discourse ora sembra generare errori in alcune aree casuali che causano problemi con la creazione di account dal sito Web tramite l’API.
Stavamo utilizzando la gemma ruby discourse_api alla versione 0.10.1, che ho aggiornato a 0.48.1.

L’errore si verifica in
DiscourseApiService.new.user(self)

che chiama
resp = client.get("/users/by-external/#{user.id}")

che genera l’errore
{"errors"=>["The requested URL or resource could not be found."], "error_type"=>"not_found"}

Questo funzionava bene, ma ora per qualche motivo l’URL non viene trovato.

Ho provato a declassare nuovamente la gemma discourse_api a 0.10.1, che è quella che stavamo eseguendo in precedenza, e supera la fase client.get correttamente, ma fallisce alla chiamata successiva con lo stesso errore.

client.sync_sso(

{"errors"=>["The requested URL or resource could not be found."], "error_type"=>"not_found"}

L’endpoint è cambiato in /u/by-external/{external_id}.json a un certo punto. E sono richieste una chiave API e un nome utente per tale endpoint.

1 Mi Piace

Sono riuscito a risolverlo

Sembra che abbiano aggiornato il codice per generare effettivamente un errore se non viene trovato alcun utente, quindi ho dovuto fare un rescue invece di confrontare se 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

Inoltre, la risposta è cambiata da
resp['body']['user']
a
resp.response.env.body['user']

Il mio ultimo problema rimasto è che quando chiamo client.sync_sso ottengo ora un errore interno del server 500

I log mostrano
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "user_emails_pkey")

Tuttavia, se uso gli stessi identici dettagli nel terminale rails ed eseguo client.sync_sso, funziona perfettamente

Solo per informazione, non ho cambiato l’endpoint affinché le parti sopra riprendano a funzionare, quindi sembra che /users/by-external/ sia ancora valido

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