socialiteproviders/apple
Apple provider for Laravel Socialite, enabling Sign in with Apple via a native OAuth provider. Install with Composer, configure your Apple client ID, team ID, key ID, and private key, then authenticate users with a single Socialite call. Maintained by the Socialite Providers community.
Provider class before this claim reaches a roadmap slide.user() hides the raw token response, you must explicitly call getAccessTokenResponse() in the callback and encrypt the refresh_token at consent time — you cannot retroactively recover it. That is an architectural constraint, and it should be surfaced before committing to a deletion SLA or publishing a privacy policy that promises it.@privaterelay.appleid.com relay address; email_verified can arrive as a string. These are product-visible facts. They determine whether onboarding needs a "confirm your name" step, whether email can be an account-linking key (it cannot — use the sub claim), and whether lifecycle/marketing messaging can rely on Apple-derived addresses. Decide these in design, not after launch.SocialiteProviders/Providers. Mitigate by wrapping the provider behind an internal SignInWithApple service interface (redirect(), userFromCallback(), revoke()) so an eventual exit is a one-file change and replacement cost stays low.Adopt when:
id_token and maps it to a user.SESSION_SAME_SITE=none over HTTPS, and a byte-exact Return URL in the Apple Developer console.Look elsewhere (or plan to build more) when:
id_tokens require signature verification against Apple's JWKS plus iss/exp/aud checks — payload decoding alone is not authentication. stateless() disables the state check and must never be used for the browser flow.For executives — the one-liner: Adding Sign in with Apple to our Laravel product is a small, well-understood adapter integration, not a new auth system. It gets us platform parity and removes a predictable App Store review objection for roughly a story of engineering, plus a defined set of follow-on lifecycle work we'd need anyway.
Three points to land:
For engineering — the framing they'll respect: this package is an OAuth2 adapter with a deliberately thin surface. Read Provider first. It does not sign secrets, verify JWKS, or revoke tokens — those are ours. The known sharp edges are the POST callback, CSRF exclusion, and SameSite cookie behavior; the known data edges are first-consent-only name/email and private relay addresses. Build against the sub claim, capture the refresh token in the callback, rotate the client secret on a schedule via cache rather than a static .env JWT, and pin the version while tracking the SocialiteProviders/Providers changelog — the 6.1.0 multi-audience change is exactly the kind of provider-behavior shift that warrants a config review, not a blind composer update.
How can I help you explore Laravel packages today?