手机登录php服务器地址_iOS 苹果授权登录(Sign in with Apple)系列之PHP服务端篇...

在 iOS13 中,如果 App 提供第三方登录,就必须添加 苹果登录 Sign in with Apple 选项,并要求所有开发者于 2020年4月之前 完成现有应用的更新,否则审核不给通过。

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

不验证模式

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

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

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

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

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

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

验证模式

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

基于 JWT 的验证

食用指南

后端只需要接收 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);

}

基于授权码的验证

其中 iss 和 kid 的获取方式

f05c20b51a8b4764de9f068f9e4b6d56.png

跑不通不知道哪里错了,等研究出来再更新

{

"error": "invalid_client"

}

Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值