我在我的 Laravel API 中添加了我的登录端点功能,以便用户在我尝试时也可以使用 Apple 登录,配置中的所有内容在我的 api 中看起来也都很好我收到了:
(
[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] =>
)
正如我们所看到的,身份验证看起来不错,也缺少用户电子邮件..我也有一个ID,但我不明白为什么我不能使用用户邮件..
我使用苹果提供商的社交名流的 userFromToken
$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))
]
);
缺少什么?即使用户不想共享他的邮件,苹果也会生成一个。
如何解决这个问题?
谢谢
初次注册时,仅回复用户信息是正常的。对于使用同一 Apple 帐户的后续连接,不会共享用户信息,并且仅在响应中返回用户标识符,如您的情况。建议安全地缓存包含用户信息(电子邮件、名字、姓氏)的初始响应,直到您确认已在服务器上成功创建帐户。
就我而言,要在初始连接期间接收信息,我必须访问 iPhone 的设置以删除链接到我的 Apple ID 的应用程序。如果您使用的是 iPhone,则可以访问“设置”,点击您的姓名,然后点击“登录和安全”,然后点击“使用 Apple 登录”。您将看到通过 Apple 登录使用的应用程序列表。然后就可以删除该应用了(有时可能需要坚持删除)。
尝试再次登录,您应该会收到用户信息,因为这是至关重要的初始连接。
以下是不同的链接: