• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

微信小程序实现登录功能 (第一种模式)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

------------恢复内容开始------------

第一种模式:设置小程序启动页为登录页

1.wxml代码(布局的,最终要的是按钮)

 

 1 <view class=\'header\'>
 2   <image src=\'/image/1.png\'></image> //图片自己引入
 3 </view>
 4 <view class=\'content\'>
 5   <view>申请获取以下权限</view>
 6   <text>获得你的公开信息(昵称,头像等)</text>
 7 </view>
 8 <button class=\'bottom\' type=\'primary\' open-type="getUserInfo" bind:getuserinfo="bindGetUserInfo">
 9   授权登录
10 </button>

 

 

 

 

2.butten按钮的设置

 

 注:上图来源于网络截图,如有冒犯请联系撤回,谢谢!

  

给按钮绑定触发事件 放可进入授权登录的小窗口

 

 

3.绑定触发事件后在js文件中写相对应的方法(以下是login.js中的全部代码)

 

 1 Page({
 2   data: {
 3     //判断小程序的API,回调,参数,组件等是否在当前版本可用。
 4     canIUse: wx.canIUse(\'button.open-type.getUserInfo\'),
 5     isHide: false
 6   },
 7   onLoad: function () {
 8     //页面初次加载判断用户是否授权过 去缓存中读取是否有
 9     wx.getStorage({
10       key: \'openid\',
11       success(res) {
12        //判断是否有openid  如果不为空则跳转到首页
13         if (res.data != "") {
14           //跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
15           wx.switchTab({
16             url: \'/pages/index/index\'
17           })
18         }
19       }
20     })
21   },
22   bindGetUserInfo(e) {
23     console.log(e)
24     //如果不允许  则没有userInfo这个值
25     //获取用户的昵称 判断用户点击的是允许还是拒绝
26     if (e.detail.userInfo) {
27       //如果用户允许,则能得到userInfo
28       console.log(e.detail.userInfo)
29       //获取用户的昵称 
30       let nickname = e.detail.userInfo.nickName
31       // console.log(nickname)
32       //获取用户的昵称  去获取code
33       wx.login({
34 
35         success(res) {
36           if (res.code) {
37             //得到了code值  携带参数发送请求
38             console.log(res.code)
39             //发起网络请求
40             wx.request({
41               url: \'http://www.xxxxxx.com/index.php/users/index/index\',
42               data: {
43                 code: res.code,
44                 nickname: nickname,
45               },
46               dataType: "json",
47               method: "GET",
48               success(res) {
49                 console.log(res.data.data.openid)
50                 console.log(res.data.code)
51                 //判断是否授权成功
52                 if (res.data.code == 200) {
53                   //将用户的openid缓存起来
54                   wx.setStorage({
55                     key: "openid",
56                     data: res.data.data.openid
57                   })
58                   //页面跳转
59                   wx.switchTab({
60                     //跳转地址
61                     url: \'/pages/index/index\',
62                   })
63                 } else {
64 
65                 }
66               }
67             })
68           } else {
69             console.log(\'登录失败!\' + res.errMsg)
70           }
71         }
72       })
73 
74     }
75 
76   }
77 
78 })

 

4.php中的逻辑处理 如何获取用户信息

 1     public function index()
 2     {
 3         //获取到code值
 4         $code=input(\'code\');
 5        //已知appid 与 secret   从自己的微信公众平台注册获取
 6         $appid="xxxxxxx";
 7         $secret="xxxxxxxxx";
 8         $url="https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
 9         //通过curl函数获取用户的oppid和sessionkey  将其进行添加入库
10         $res=curl_request($url,false,[],true);
11         //对 JSON 格式的字符串进行解码,转换为 PHP 变量   此次将 JSON 格式的字符串转化为数组
12         $res=\Qiniu\json_decode($res,true);
13         //判断用户是否已经授权过
14         $user=\app\wxxcx\model\Users::where(\'openid\',$res[\'openid\'])->find();
15         //如果用户已将存在则直接返回数据
16         if ($user){
17             return json([\'code\'=>200,\'msg\'=>\'success\',\'data\'=>$user]);
18         }
19         //拼接数组入库保存
20         $info=[
21             \'openid\'=>$res[\'openid\'],
22             \'sessionkey\'=>$res[\'session_key\']
23         ];
24         //添加入库
25         $data=\app\wxxcx\model\Users::create($info)->toArray();
26         //将数据返回
27         if ($data){
28             return json([\'code\'=>200,\'msg\'=>\'success\',\'data\'=>$data]);
29         }else{
30             return json([\'code\'=>500,\'msg\'=>\'error\',\'data\'=>""]);
31         }
32 
33     }

 

 

 

5.wxss

/**index.wxss**/
.userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.userinfo-avatar {
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
}

.userinfo-nickname {
  color: #aaa;
}

.usermotto {
  margin-top: 200px;
}

 

 注释:上面这种做法的好处的,设置登录页为默认启动页,而tabbar并未设置该页,所以说不用考虑tabbar在未登录状态下的是否显示问题,后端处理成功后考虑到后面会验证用户是否登录,所以要将用户的openid存入缓存中,等待随时取值

 

以上是以启动页来获取用户个人信息,微信小程序还提供了可以在app.js中通过获取当前浏览者的code进而获取openid和session_key

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
微信小程序开发 - 用户授权登陆发布时间:2022-07-18
下一篇:
微信小程序 授权登录详解(附完整源码) - 子钦加油发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap