首页 > 编程知识 正文

laravel开发效率,用web做一个登录页面

时间:2023-05-04 20:33:31 阅读:136753 作者:2652

在我们的项目开发中,第三方登录可以为用户提供微信、QQ、微博登录等便利。

作为一个优雅的PHP框架,Laravel集成了许多第三方登录插件。

本文详细阐述了在Laravel框架中实现QQ登录的方法。

1 .在准备开发之前,首先需要在QQ互联平台上创建一个APP发布。

1、登录QQ互联网中心(URL:https://connect.QQ.com/manage.html #/)注册,完成开发者实名认证。

2、单击下面的“创建APP”按钮,然后从弹出框中选择创建站点APP

3、填写应用基本资料

其中,站点名称必须是站点ICP备份编号的名称。 否则,审查不合格。

4、完善资料,点击制作APP即可。

在此注意:

可以填写多个网站召回地点。 这个请记住。 开发过程使用这个地址。 例如,http://www.domain.com/oauth/qq提供者,即域名备案的主体,个人是姓名。 5、等待审查通过。

5、APP审核通过后,点击APP上的查看按钮,可以查看APP的APP ID和APP Key。

6 .选择APP应用程序接口目标、unionid接口和访问。

这样,前期准备就完成了。 开发过程中,到目前为止需要三个参数。

实现APP IDAPP Key回叫地址2.QQ登录,获取用户基本信息1,创建Laravel项目。

怎么制作? 请单击此处

2、添加依存插件/服务:

可以打开Terminal,然后使用以下composer命令将其添加

composerrequiresocialiteproviders/QQ图:

3、添加服务提供商服务提供商

打开文件config/app.php,找到添加的提供程序词典,如下所示:

' providers '=[/laravelsocialitesocialiteserviceprovider :3360 classo///如果有此行,请注释socialiteproviders

同样,在config/app.php中,向下滚动可显示aliases词典,并添加了以下内容:

' aliases '=[ ' socialite '=laravelsocialitefacadessocialite 33603360 class,//添加行],5,事件处理程序eventservice

在app/providers/eventserviceprovider.PHP文件中,找到$listen数组并添加:

protected $listen=[ //下一个处理器' socialite providersmanagersocialitewascalled '=[ ' socialite providersQQ下一个处理器

在上一节的结尾,我们讨论了所需的参数。

将以下内容添加到配置文件config/services.php中:

' QQ'=['client_id'=env ',' QQ_key'],' client_secret'=env ',' QQ_secret ' ',' redirect'=env

QQ _ key=appid QQ _ secret=appkey QQ _ redirect _ uri='网站回调地址' 7,添加路由

在web.php根文件中,添加以下根: 各路线的说明请参考注释。

//qq回叫路径,QQ互连平台和一直路由: get (/plugin/qqlog in/callback.PHP ),' auth controller @ callble //qq登录路径可以定制路由:3360 get (/log in/QQ )、()自动控制器@ qqlog in )。 8、建立控制类

phpartisanmake : controllerauthcontroller 9、控制类内容的创建和测试:

? hpnamespaceapphttpcontrollers; use IlluminateHttpRequest; uselaravelsocialitefacadessocialite; classauthcontrollerextendscontroller {//

//跳转QQ登录按钮 public function qqLogin() { return Socialite::driver('qq')->redirect(); } //登录的回调 public function callback() { //获取回调信息 $userInfo = Socialite::driver('qq')->user(); //打印返回的信息,有基本信息字段和详细信息数组 //dd($userInfo); // 获取基本信息 echo '用户ID:' . $userInfo->getId() . '<br>'; echo '用户头像URL:' . $userInfo->getAvatar() . '<br>'; echo '用户昵称:' . $userInfo->getNickname() . '<br>'; //获取更加详细的西乡 $user = $userInfo->user; echo '性别:' . $user['gender'] . '<br>'; echo '性别:' . $user['gender_type'] . '<br>'; echo '省份:' . $user['province'] . '<br>'; echo '城市:' . $user['city'] . '<br>'; echo '年:' . $user['year'] . '<br>'; }} 3. 效果测试

1、访问登录页面,路由中已设置网址为:http://yourdomain.com/login/qq

2、自动跳转至登录QQ官方的授权登录页面

3、扫码或者快捷登录后,即可跳转至回调页面:http://yourdomain.com/plugin/qqlogin/callback.php

如果跳转后,出现 CURL出现code ERROR 60错误,请看最后一节。

4、如上源码,将回调信息,使用dd函数,打印出来,是这样的:

5、可以对一些关键信息打印,如上源码注释,打印信息如下:

4. 获取unionid

在上面的结果图片中,通过dd函数,打印的返回结果,最后的unionid值为空。

所以,需要单独获取该用户的unionid,只需要一个get请求即可搞定。

官网获取unionid的介绍:https://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D

首先,修改回调控制类的方法,修改如下:

//登录的回调 public function callback() { //获取基本信息 $userInfo = Socialite::driver('qq')->user(); //打印返回的信息,有基本信息字段和详细信息数组 //dd($userInfo); //通过dd打印,可以看出,基本信息中的 unionid 为空,可以发送get请求获取 //发送get请求,获取 unionid $userInfo2 = Http::get('https://graph.qq.com/oauth2.0/me?access_token=' . $userInfo->accessTokenResponseBody['access_token'] . '&unionid=1&fmt=json'); $userInfo2 = json_decode($userInfo2, true); //dd($userInfo2); $unionid = $userInfo2['unionid']; // 获取基本信息 echo '用户ID:' . $userInfo->getId() . '<br>'; echo '用户unionid:' . $unionid . '<br>'; echo '用户头像URL:' . $userInfo->getAvatar() . '<br>'; echo '用户昵称:' . $userInfo->getNickname() . '<br>'; //获取更加详细的信息 $user = $userInfo->user; echo '性别:' . $user['gender'] . '<br>'; echo '性别:' . $user['gender_type'] . '<br>'; echo '省份:' . $user['province'] . '<br>'; echo '城市:' . $user['city'] . '<br>'; echo '年:' . $user['year'] . '<br>'; }

其实只添加了三行代码。

然后,第19行,即打印获取的unionid,截图如下:

这里注意,代码第12行处的get 请求,参考自:https://learnku.com/articles/47768

5、测试阶段的一个问题

参考自:https://my.oschina.net/u/4346195/blog/3499485

1、访问https://curl.haxx.se/ca/cacert.pem 下载名为 cacert.pem 的文件

2、将该文件放在某个文件夹下(比如桌面),然后复制其路径,如:C:UserszhangsanDesktopcacert.pem

3、然后打开 php.ini 文件,找到最后面的 curl.cainfo = ,将其取消注释,并修改为 curl.cainfo = cacert.pem文件路径 ,保存即可。如:

[curl]; A default value for the CURLOPT_CAINFO option. This is required to be an; absolute path.curl.cainfo = "C:UserszhangsanDesktopcacert.pem"

重启phpstudy。

参考资料:

https://learnku.com/articles/24984https://my.oschina.net/u/4346195/blog/3499485https://learnku.com/articles/47768https://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。