ad4ceaff30
Root cause: ConsentController::grant() only passed client_id and scope in the post-consent redirect, relying on PHP session fallback for state, response_type, redirect_uri etc. On NC 32 (PHP 8.4), session values were intermittently lost between session->close() and the subsequent GET request, causing 500 errors from trim(null) / matchRedirectUri(null). OIDC app fixes: - Pass all OAuth params in consent redirect URL (eliminates session race) - Add null safety guard in authorize endpoint (400 instead of 500) Test infra fixes: - Wait for OIDC redirect chain to settle before handling consent screen (fixes "Execution context was destroyed" Playwright errors) - Capture nextcloud.log in CI failure artifacts for PHP error debugging Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>