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

  • 相关阅读:
    【洛谷P4887】【模板】莫队二次离线(第十四分块(前体))
    查询数据库表大小
    java程序使用ssl证书连接mysql
    win32- 函数运行速度测试
    回调函数是嘛东西
    win32-读取控制台中所有的字符串
    关于 websocket 的一些学习
    idea下载地址
    ida 重新定义
    P1650 田忌赛马(贪心)
  • 原文地址:https://www.cnblogs.com/e0yu/p/14718168.html
Copyright © 2011-2022 走看看