对接苹果登录
1.前端传token
2.服务端解析获取用户信息
<?php
/*
@author: wjf
@contact: Hurrican
@software: PhpStorm
@create: 2024/8/21 16:28
*/
declare(strict_types=1);
namespace app\api\service\apple;
use app\common\service\BaseService;
use Firebase\JWT\ExpiredException;
use Firebase\JWT\JWK;
use Firebase\JWT\JWT;
class AppleService extends BaseService {
public function getUserInfo($app_token):array
{
try {
$url = 'https://appleid.apple.com/auth/keys';
$res = curl_get_https($url);
$keys = json_decode($res, true);
$parsedKeys = JWK::parseKeySet($keys);
$decoded = JWT::decode($app_token, $parsedKeys);
// JWT 中 sub 即为 OpenID
$openId = $decoded->sub;
// 邮箱地址
$email = $decoded->email;
return [
'open_id' => $openId,
'email' => $email
];
} catch (\Exception $e) {
// 一定要捕获异常并自行处理解析 Key 失败的情况
if ($e instanceof ExpiredException) {
// 返回友好提示告知用户授权过期
throwError('token已过期,请重新授权');
}else{
throwError($e->getMessage());
}
}
}
}
龙卷风之殇

浙公网安备 33010602011771号