docs: Correct the Authentication provider pages for 4.0 - #729
Merged
Conversation
Zfinix
reviewed
Aug 5, 2026
Zfinix
reviewed
Aug 5, 2026
Zfinix
reviewed
Aug 5, 2026
Zfinix
reviewed
Aug 5, 2026
Zfinix
requested changes
Aug 5, 2026
Zfinix
left a comment
Contributor
There was a problem hiding this comment.
Left some comments. The Firebase example and the button style precedence are the blocking ones.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Second of three PRs reworking the Authentication section for 4.0, after #728. This one is a correctness-only pass over the provider pages: no files move, no pages merge. The structural normalization of the provider groups follows in a separate PR so each can be reviewed for one thing.
Every framework claim was verified against
serverpod/serverpodat 4.0.0-beta.1.The systemic fix
Six provider UI pages documented per-provider button enum families (
GSIButtonTheme,FacebookButtonText,MicrosoftButtonType, and friends) that do not exist at 4.0. Every styling snippet on those pages failed to compile. They now use the real shared API (SignInButtonSize/Shape/TextVariantplus the per-brand*ButtonStyleenums), with the actual constructor defaults shown, and a note that brand color presets only apply outsideSignInWidget.Documented flows that did not work
AuthSuccess, so the app was never signed in. They now register it withclient.auth.updateSignedInUser. The endpoint snippets also missed the abstracthasAccountoverride and, on the walkthrough page, theIdentityProvidercontract, so none of them compiled.SignInWithAppleCallbackblock (from thesign_in_with_applepackage) is now used in both places it appears.Pressing M applies the migration too
The
serverpod startTUI creates and applies a migration in one step when you press M; A retries a failed apply. Fifteen pages in this section said "press M to create the migration, then A to apply it", including one line in the email setup page from #707. All are corrected, and the setup page documents the retry role of A. The same wording exists in two pages outside this section (server-fundamentals/modulesanddatabase/tables); those are left for a follow-up so this PR stays in one section.The Flutter app is served at /, not /app
Default projects (
website=false, the default in both the TUI and non-interactive create) mountFlutterRouteat/; only website-enabled projects use/app. The GitHub local web-test command (--base-href /app/) would have produced a broken app on a default project, and Google troubleshooting hardcoded the/apppath. Both now describe the default with a note for the website variant.Other corrections worth naming
webAuthenticationCallbackRoutePathdefault is/auth/apple/callback;serviceIdentifier/redirectUriare required on every platform (initialization throws without them); Serverpod already revokes tokens on Apple's revocation notification, so the manual-invalidation guidance is gone; authorization codes expire in five minutes, not ten;onAfterAppleAccountCreatedexists and is now documented with an example.redirectUriweb mode is gone (web always uses the redirect flow);attemptLightweightSignInhas no effect on web; the default account validation requiresverifiedEmailplus both name fields;String.fromEnvironmentcalls are nowconstso--dart-definevalues are actually read.redirectUriis aString, not aUri; the private-email troubleshooting reflects the/user/emailsfallback; scope changes from callbacks apply on the next sign-in.FirebaseIdpConfig.requireVerifiedEmailas the opt-in andFirebaseEmailNotVerifiedExceptionreaching the app; onlyproject_idis used from the service account JSON;findUserByFirebaseUserIdis static; the "invalid signature" troubleshooting names the real causes (verification is against Google's public certificates, not the service key).FacebookAccountDetailsexposesfullName/firstName/lastName, notname; the client token is used by the mobile SDKs, not web.MicrosoftAccountDetails.imageBytes(Uint8List?), notimage(Uri?); theMICROSOFT_TENANTdart-define is removed since nothing reads it; the profile photo is fetched after validation, controlled byfetchProfilePhoto.InvalidEmailExceptionso the widget can show the message; the development bypass code is digits-only, matching what the verification input accepts;deleteEmailAccountRequestByIdtakes its argument positionally;AuthIdpTheme.defaultTheme()replaces a snippet that passed a nonexistent field and omitted two required ones.server.dartsnippets across four pages gained their generated imports.Cross-cutting style: headings sentence-cased, "app" for the Flutter app in prose, brand capitalization, and the remaining semicolon splices split.
npm run buildpasses.