• 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 的获取方式:

  • 相关阅读:
    PHP 函数
    MariaDB——(三) MariaDB 10.0.15 standard replication主从复制搭建
    MariaDB——(二) MariaDB 10.0.15 日志文件—undo 日志
    MariaDB——(一)CentOS 6.5 下 MariaDB 10.0.15 YUM 安装
    虚拟机中的linux系统文件突然全部变成只读的问题
    复制虚拟机vmware centos搭建集群节点过程中网络配置eth0和eth1遇到的问题以及NAT模式下虚拟机静态IP配置方法
    WMware 中CentOS系统Hadoop 分布式环境搭建(一)——Hadoop安装环境准备
    关于Oracle字符集在dmp文件导入导出中的乱码影响
    VMware 打开虚拟机的时候提示 internal error 内部错误 遇到这个问题时我的解决方法
    ORACLE 存储过程中保存用户自定义异常信息的一种方式
  • 原文地址:https://www.cnblogs.com/e0yu/p/14718168.html
Copyright © 2020-2023  润新知