前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序开发(授权登陆)

小程序开发(授权登陆)

原创
作者头像
IT工作者
发布2022-02-17 12:04:28
7280
发布2022-02-17 12:04:28
举报
文章被收录于专栏:程序技术知识

授权登陆功能实现:

1.通过wx.login获取code

2.然后wx.request发送给后台,获取openid和session_key

3.服务根据openid端随机生成一串唯一字符串为3rdSessionId

4.客户端使用wx.setstoragesync缓存3rdSessionId

5.用wx.getstoragesync获取3rdSessionId如果存在,就已经登陆,不存在就未登陆(检验登陆态)

login.js

代码语言:javascript
复制
Page({

data:{login:flase},

onLoad: function () {

  var that = this;

  // 查看是否授权

  let a = wx.getStorageSync('token')

  //获取token

  if (a ==""){

  	//通过改变login的ture或flase来判断是否展示登陆按钮

that.setData({login:flase})

}else{

that.setData({login:ture})}

 },

//登陆

 bindGetUserInfo:function(e){

consloe.log(e)

let a = e.detail

wx.login({

	//获取code发送到php后台

success:function(res){

	console.log(res.code)

	wx.request({

          url: 'login.php', //接口地址

          data: {code:res.code},

          header: {

            'content-type': 'application/json' //默认值

          },

          success: function (res) {

            console.log(res.data.token)

            wx.setStorageSync('token',res.data.token)

            //缓存token

            this.setData({

           login:ture

})

          },fail:function(){

           console.log("登陆失败")

}

        })

	}

})

}

})

login.wxml

代码语言:javascript
复制
  <view wx:if="{{login}}" class='userinfo'>

        <open-data type="userAvatarUrl"></open-data>

      </view>

      <view wx:else>

      <button type='primary' open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo" >授权登录</button>

      </view>

login.wxss

代码语言:javascript
复制
.userinfo {

  overflow: hidden;

  display: block;

  width: 120rpx;

  height: 120rpx;

  border-radius: 50%;

}

php解析code代码(login.php接口):

代码语言:javascript
复制
function login(){

    $code = $_GET['code'];

    $appid = 'APPID';

    $AppSecret = 'APPSECRET';

    $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$AppSecret."&js_code=".$code."&grant_type=authorization_code";

    $str = file_get_contents($url);

    $json = json_decode($str);

    $arr = get_object_vars($json);

    echo $openid = $arr['openid']; //这是openid

    echo $session_key = $arr['session_key']; //这是session_key

}

总结:

后台根据openid生成3rdSessionId发送到客户端,用作登陆态,最好是设置有时效性的。

本人菜鸟一枚,有什么错的地方希望大佬们多多包涵。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 授权登陆功能实现:
  • login.js
  • login.wxml
  • login.wxss
  • php解析code代码(login.php接口):
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档