对接苹果登录
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号