zoukankan      html  css  js  c++  java
  • Uniapp---苹果授权登录【PHP服务端】

    在使用Uniapp做苹果授权登录,那么服务端的代码怎么写呢?下面是PHP服务端的具体写法:

    JAVA可以参考:

    https://blog.csdn.net/wpf199402076118/article/details/99677412

    苹果提供了两种验证方式,一种是基于 JWT 的算法验证,另外一种是基于 授权码 的验证,这里再提供第三种“取巧”的验证方式即“不验证模式”。

    不验证模式

    后端只需要接收App端提交的以下参数(user、email 为Apple返回给App的参数名)

    user: 授权的用户唯一标识,该值在同一个开发者账号下的所有 App 下是一样的,开发者可以用该唯一标识符与自己后台系统的账号体系绑定起来

    email: 邮箱,只有第一次 授权苹果才会给 App 返回邮箱信息,之后登录不再返回

    fullName: 用户信息,只有第一次 授权苹果才会给 App 返回用户信息,之后登录不再返回

    开发者只要判断 数据库 是否存在 user(授权的用户唯一标识) 存在就返回登录成功信息,不存在即在数据库插入 user、email、fullName等信息(业务逻辑根据具体需求调整)

    教程到此结束,后面不用看了

    验证模式

    苹果授权登录(Sign in with Apple)后端验证

    基于 JWT 的验证

    Sign in with Apple 后端 JWT 验证文档:

    https://developer.apple.com/documentation/signinwithapplerestapi/fetch_apple_s_public_key_for_verifying_token_signature

    使用指南:

    后端只需要接收 App 端提交的以下参数(user、email 为Apple返回给App的参数名)

    userID: 授权的用户唯一标识,该值在同一个开发者账号下的所有 App 下是一样的,开发者可以用该唯一标识符与自己后台系统的账号体系绑定起来

    email: 邮箱,只有第一次 授权苹果才会给 App 返回邮箱信息,之后登录不再返回

    fullName: 用户信息,只有第一次 授权苹果才会给 App 返回用户信息,之后登录不再返回

    authorizationCode: 授权 code(没用到)

    identityToken: 授权用户的 JWT 凭证

    如何验证:

    1、安装 php-apple-signin 库

    composer require griffinledingham/php-apple-signin

    需要php7.2及以上的版本,需要低于这个版本,需要修改源码,源码地址:

    https://github.com/GriffinLedingham/php-apple-signin

    2、验证JWT

    public function jwtApple(Request $request) {
        // 授权的用户唯一标识
        $user = $request->input('user');
        // 邮箱
        $email = $request->input('email');
        // 用户信息
        $fullName = $request->input('fullName');
        // 授权code 并没有用到
        $authorizationCode = $request->input('authorizationCode');
        // 授权用户的JWT凭证
        $identityToken = $request->input('identityToken');
        $appleSignInPayload = ASDecoder::getAppleSignInPayload($identityToken);
        $isValid = $appleSignInPayload->verifyUser($user);
        // 当 $isValid 为 true 时验证通过,后续逻辑根据需求编写
        dd($isValid);
    }

    基于授权码的验证:

    Sign in with Apple 后端 授权码 验证文档:

    https://developer.apple.com/documentation/signinwithapplerestapi/generate_and_validate_tokens

    其中 iss 和 kid 的获取方式:

  • 相关阅读:
    nyist 287 Redar
    nyist 14 会场安排问题
    nyist 90 整数分割
    nyist 123 士兵杀敌四
    nyist 116 士兵杀敌
    nyist 277 车牌号
    nyist 590 相同的和
    寄宿于WindowsService的WebAPI
    C#Dictionary 字典、泛型
    Repository模式
  • 原文地址:https://www.cnblogs.com/e0yu/p/14718168.html
Copyright © 2011-2022 走看看