<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mikebronner / laravel-sign-in-with-apple example snippets
use GeneaLabs\LaravelSignInWithApple\Support\ClientSecretGenerator;
// One-off generation
$secret = ClientSecretGenerator::generate(
teamId: 'YOUR_TEAM_ID',
clientId: 'com.example.service',
keyId: 'YOUR_KEY_ID',
privateKey: file_get_contents(storage_path('keys/apple-auth-key.p8')),
ttlDays: 180, // Max 180 days
);
// Or use config/env values automatically
$secret = ClientSecretGenerator::fromConfig();
// In a scheduled command or service provider
$secret = ClientSecretGenerator::fromConfig(ttlDays: 180);
config(['services.sign_in_with_apple.client_secret' => $secret]);
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use GeneaLabs\LaravelSocialiter\Facades\Socialiter;
use Laravel\Socialite\Facades\Socialite;
class AppleSigninController extends Controller
{
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function login()
{
return Socialite::driver("sign-in-with-apple")
->scopes(["name", "email"])
->redirect();
}
public function callback(Request $request)
{
// get abstract user object, not persisted
$user = Socialite::driver("sign-in-with-apple")
->user();
// or use Socialiter to automatically manage user resolution and persistence
$user = Socialiter::driver("sign-in-with-apple")
->login();
}
}
use GeneaLabs\LaravelSignInWithApple\Http\Controllers\AppleNotificationController;
Route::post('/apple/notifications', [AppleNotificationController::class, 'handle'])
->withoutMiddleware([\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken::class]);
// In EventServiceProvider or a listener
use GeneaLabs\LaravelSignInWithApple\Events\AppleAccessRevoked;
Event::listen(AppleAccessRevoked::class, function (AppleAccessRevoked $event) {
// $event->sub — the Apple user ID
// $event->eventType — 'consent-revoked' or 'account-delete'
$user = User::where('apple_id', $event->sub)->first();
if ($user) {
// Deactivate, log out, or clean up
}
});
$appleUser = Socialite::driver('sign-in-with-apple')->user();
if ($appleUser['is_returning_user']) {
// User re-authenticated after revocation — match by email
$user = User::where('email', $appleUser->getEmail())->first();
} else {
// First-time sign-in — name is available
$user = User::firstOrCreate(
['apple_id' => $appleUser->getId()],
['name' => $appleUser->getName(), 'email' => $appleUser->getEmail()]
);
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.