[API 写法] 基于 socialite 扩展包做的 苹果登录 (apple 登录)
2020年4月之后,上架App Store得应用如果含有三方登录如google、微信、github等必须集成apple账号得登录,否则无法通过审核!
谁让小胳膊拧不过大腿呢。我们要上线还是的集成.
首先介绍下,本文章主要介绍纯API集成Apple登录。而且使用了socialite集成的三方登录,qq、微信已经集成对接完成。如果有需要的可以给我留言。我有时间可以把相关也贴出来。
还是很感谢socialite 非常适宜的增加了apple登录。前几天看还没有今天一刷新居然已经集成了。非常的高兴可以节省大量时间完成功能。不用重复造轮子。
一. socialite 介绍
首先贴一下socialite集成类目地址 方便大家找到使用:
socialiteproviders.netlify.app/pro...1.
composer require socialiteproviders/apple
2.
config\app.php 的 \SocialiteProviders\Manager\ServiceProvider::class到中的providers[]
'providers' => [
// a whole bunch of providers
// remove 'Laravel\Socialite\SocialiteServiceProvider',
\SocialiteProviders\Manager\ServiceProvider::class, // add
];
3.
事件监听器
将SocialiteProviders\Manager\SocialiteWasCalled事件添加到您的listen[] 数组中app/Providers/EventServiceProvider。
将您的侦听器(即来自提供者的侦听器)添加到SocialiteProviders\Manager\SocialiteWasCalled[]刚创建的侦听器中。
您为此提供程序添加的侦听器 为'SocialiteProviders\\Apple\\AppleExtendSocialite@handle',
如:protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
// add your listeners (aka providers) here
'SocialiteProviders\\Apple\\AppleExtendSocialite@handle',
],
];
4.
配置相关 请使用此扩展包 socialite-apple-helper
github.com/Ahilmurugesan/socialite...
***其他使用方法请看socialite 不同的我们可以继续讨论
下面说说几个常见的问题
注:
- 出现返回状态码 400 invalid_request 类信息。通常由于缺少参数,包含不受支持的参数,包含多个凭据或使用多种机制进行客户端身份验证而导致请求格式错误。
可以重点看一下扩展包需要的参数是code 。入参数必须要有 。- 出现状态吗400 invalid_client 为客户端认证失败。如果code正常传入对话 请主要看下 APPLE_CLIENT_SECRET 是否已经生成且生成对。
- 出现状态吗 400且返回报错是:invalid_grant 。出现此错误基本可以确认是前端传值错误,可以去让前端在确认下数据。这里给的排查建议是,前端获取到值后需要转string类型传给后端,这个点需要注意.
- 还有一种错误可能是header头里面User-Agent ,可以删除试试 。
$request->headers->remove(‘User-Agent’);
不过官网给到两种登录方式 大家可以看看 。我这里主要是基于socialite扩展包做的纯API文档 。
纯API还有一点需要注意 使用扩展包在
$driver = Socialite::driver('apple');
//下面这个要开启不校验web的一些数据 可以看源码 ,因为我们是纯api无状态的开启方式
Socialite::with('apple')->stateless();
下面就可以获取到用户信息了
$userInfo = $driver->user();
入参:
返回值:
关于返回值中邮箱发现不对 经过查看文档大概意思是,如果用户未授权显示个人真实等信息,则苹果接口会返回一个以.appleid.com结尾的邮箱
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: