Bonjour, je travaille à la création d’une API pour la connexion à Discourse en utilisant Apple. J’ai déjà installé le plugin et suivi les instructions de Authentification Apple pour Discourse. Cela fonctionne bien lors de la connexion à Discourse en utilisant un compte Apple sur le site web.
Après avoir vérifié le flux de connexion Apple depuis le web, j’ai remarqué qu’il redirige vers la page Apple pour la connexion, obtient un code généré par Apple lors d’une connexion réussie, puis redirige vers :
POST {{discourse_host}}/auth/apple/callback avec les paramètres state:{state}, code:{code from Apple}
Après cela, il redirige vers GET {{discourse_host}}/auth/apple/callback?code={{code from Apple}}&state={state}, générant un nouveau cookie qui sera utilisé dans l’API Discourse.
À partir de ce flux, je m’attends à ce qu’un nouveau cookie soit généré après l’appel /auth/apple/callback.
Mais lorsque j’essaie d’appeler l’API, j’obtiens l’erreur Authorization timed out, or you have switched browsers. Please try again.
J’ai donc réessayé avec un nouveau code généré par Apple, mais j’ai toujours la même erreur.
Et lorsque je vérifie le journal, il indique :
Started GET "/auth/apple/callback?code=c32f105b5084d42b8bd3e7051873ddb55.0.rrzxz.pChPU9zGlXIHHhgEXLiA5g&state=fbi3bbboud" for
(apple) Setup endpoint detected, running now.
(apple) Callback phase initiated.
(apple) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
Started GET "/auth/failure?message=csrf_detected&strategy=apple" for 123.253.233.16 at 2023-11-27 06:10:28 +0000
Processing by Users::OmniauthCallbacksController#failure as HTML
Parameters: {"message"=>"csrf_detected", "strategy"=>"apple"}
Rendered users/omniauth_callbacks/failure.html.erb within layouts/no_ember (Duration: 4.1ms | Allocations: 17)
Rendered layout layouts/no_ember.html.erb (Duration: 57.5ms | Allocations: 2882)
Message (47 copies reported)
(apple) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:163:in `log'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:486:in `fail!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-oauth2-1.7.3/lib/omniauth/strategies/oauth2.rb:87:in `callback_phase'
/var/www/discourse/plugins/discourse-apple-auth/lib/omniauth_apple.rb:60:in `callback_phase'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:238:in `callback_call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:189:in `call!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:192:in `call!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/omniauth-1.9.2/lib/omniauth/strategy.rb:192:in `call!'
Je voudrais donc demander si cette direction pour utiliser la connexion Apple de Discourse via l’API est correcte et comment résoudre le problème de l’erreur csrf_detected.





