对接苹果登录

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());
            }
        }

    }



}

  

posted @ 2025-07-22 18:46  龙卷风之殇  阅读(27)  评论(0)    收藏  举报