I add in my Laravel API on my login endpoint ability for user to sign-in with apple also when I try, everything from the config looks good also in my api I receive this:
(
[id] => 001519.7eab28c498c946828053eXXXXXXXX.XXXX
[nickname] =>
[name] =>
[email] =>
[avatar] =>
[user] => Array
(
[iss] => https://appleid.apple.com
[aud] => com.muze.mob
[exp] => 1709642029
[iat] => 1709555629
[sub] => XXXXX.XXXXXXXXXXXXXXXXXXXX.XXXX
[nonce] => XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[c_hash] => XXXXXXXXXXXX
[auth_time] => 1709555629
[nonce_supported] => 1
)
[attributes] => Array
(
[id] => XXXXX.XXXXXXXXXXXXXXXXXXXXX.XXXX
[name] =>
[email] =>
)
[token] => eyJraWQiOiJCaDZIN3JIVm1iIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJodHRwczovL2FwcGxlaWQuYXBwbGUuY29tIiwiYXVkIjoiY29tLm11emUubW9iIiwiZXhwIjoxNzA5NjQyMDI5LCJpYXQiOjE3MDk1NTU2MjksInN1YiI6IjAwMTUxOS43ZWFiMjhjNDk4Yzk0NjgyODA1M2VlYTIxYTM2ZmZjOC4xMTU5Iiwibm9uY2UiOiI1ZDVjMGRiMjE2NGU4MzZiM2YzXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[refreshToken] =>
[expiresIn] =>
[approvedScopes] =>
[accessTokenResponseBody] =>
)
As we can see the auth looks good also it miss user email .. Also I have an id but I don't understand why I can't use user mail ..
I use userFromToken from socialite with apple provider
$oauthUser = Socialite::driver($request->get('login_type'))->stateless()->userFromToken($request->get('token'));
$username = $oauthUser->getName() && !User::where('username', $oauthUser->getName())->exists() && !User::where('pseudo', $oauthUser->getName())->exists() ? $oauthUser->getName() : $this->generateUniqueUsername();
$user = User::firstOrCreate(
['email' => $oauthUser->getEmail()],
[
'username' => str_replace(' ', '', $username),
'pseudo' => str_replace(' ', '', $username),
'first_name' => $oauthUser->user['given_name'] ?? null,
'last_name' => $oauthUser->user['family_name'] ?? null,
'avatar' => $oauthUser->getAvatar(),
'email_verified_at' => now(),
'password' => Hash::make(substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), 0, 30))
]
);
What is missing ? Even if user doesn't want to share his mail apple would generate one.
How to resolve this ?
Thanks