Laravel Socialite Apple Sign In no user info

47 views Asked by At

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

0

There are 0 answers