小程序实现第三方登录,后台采用的是laravel框架

在本次小程序开发的过程中,踩了比较多的坑,也受到了很多开源代码、技术博客的启迪,一直想找时间写一篇博文,总结一下小程序实现第三方登录的流程。文章为本人原创,如有不同见解可互相交流。

1、何为小程序的第三方登录?
用过小程序的人都知道,很多小程序在用户进入的时候会询问用户“是否允许获得你的公开信息(昵称、头像等)”。点击“允许”的话,就以微信账户的身份登录了小程序。另外一种情况是手机和验证码的方式登录。今天我们要讨论的是第三种登录方式,即第三方登录。许多app在入驻小程序之前已经有了大量的注册用户,注册和认证方式多为邮箱+密码、用户名+密码。为保证用户体验和使用流程的连续性,app开发者会选择保留第三方登录的方式,详见“豆瓣评分”小程序。
小程序实现第三方登录,后台采用的是laravel框架

小程序实现第三方登录,后台采用的是laravel框架
官方给出的第三方登录文档很复杂,如下图所示,我的工程并未完全参考这个文档。
小程序实现第三方登录,后台采用的是laravel框架
2、何为laravel框架?
Laravel是一套简洁、优雅的PHP Web开发框架。在开发小程序之前,我们已经有了一套基于laravel框架开发的网站,框架中包含了从前端到后台的所有功能。小程序的开发是在此基础之上进行的。laravel中自带现成的登录、注册体系,应用起来十分方便。

下面进入正题,如何利用已有的拥有完善功能(包括登录、注册)的基于laravel框架的网站实现第三方认证。
请移步下面的链接,学习一下如何利用Passport实现laravel框架的api授权:
具体做法是:
1、简单了解一下OAuth2.0认证机制,基于laravel框架的第三方登录是基于该机制的。
2、使用Composer依赖包管理器安装Passport,使laravel具备api认证的功能
3、配置好后,在工程目录下运行客户端创建指令 php artisan passport:client,依次输入客户端信息,框架会将信息保存至client的数据表中
4、查看记录有client信息的数据表,将client_id和client_secret字段的内容拷贝下来,后面会用
5、利用小程序提供的wx.request向后台发POST请求,data中配置的信息username对应登录的唯一识别字段,password是登录密码,grant_type是‘password’表示授权认证模式为密码模式(详见OAuth2.0认证机制),client_id和client_secret是刚才在laravel中注册的客户端信息,scope与请求域相关,在此不做详细解释,可见文档 http://laravelacademy.org/post/5993.html
小程序实现第三方登录,后台采用的是laravel框架
6、请求发出后便可得到laravel后台返回的信息,其中access_token很重要,后续发数据请求需要携带着token获得访问权。expires_in是token的有效时间,以秒为单位,token_type是Bearer,后续请求需要写在token之前声明。
小程序实现第三方登录,后台采用的是laravel框架
7、后续数据请求示例(GET请求)
小程序实现第三方登录,后台采用的是laravel框架

基本流程就是这样,谷歌百度都没有搜到小程序与laravel框架结合的实例,踩过不少坑。以前对登录认证机制也不是很了解,感谢学姐的帮助,带我入门。再说一句,Postman好用,用于程序联调好极了。