小程序授权登录

@小程序授权登录

小程序授权登录

微信

微信官方开发文档链接

注意:如果使用微信提供API获取用户信息 若授权时点击取消就不能被调用(只能调用一次)
在这里插入图片描述

解决办法:通过微信提供的组件来实现微信的授权登录 组件-表单组件-button

  • 组件-button

在这里插入图片描述

		<button
			 open-type="getUserInfo"
			 bindgetuserinfo="processLogin"
			>授权获取用户信息
		</button>
processLogin: function(e){
    console.log('userInfo',e);
 },

一般需要获取openid存入到数据库

  • API-wx.login(Object object)
    在这里插入图片描述

流程获取code-通过code获取openid
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200908101703535.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2FpbmlfSA==,size_16,color_FFFFFF,t_70#pic_center

  • 通过微信API接口wx.login获取code

示例代码

wx.login({
  success (res) {
    if (res.code) {
      //发起网络请求
      wx.request({
        url: 'https://test.com/onLogin',
        data: {
          code: res.code
        }
      })
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})
  • 通过auth.code2Session获取openid

请求地址

GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

请求参数
在这里插入图片描述
返回值
在这里插入图片描述

此处微信获取用户信息到此结束。。。

字节

字节官方开发文档链接

同样字节小程序的字节授权和微信一样,都是只能调用一次授权接口,除非清除缓存
流程:获取用户授权设置-判断是否开启用户授权-若无授权打开设置页面-获取用户信息

示例代码

//获取用户授权设置
tt.getSetting({
      success(res) {
        console.log('调用成功',res);
        //判断用户是否打开用户授权设置
        if(res.authSetting['scope.userInfo']){
          tt.getUserInfo({
            success(res) {
              console.log('getUserInfo 调用成功',res.userInfo);
                var userInfo = res.userInfo;
                tt.setStorageSync('userInfo',userInfo);
                tt.setStorageSync('nick_name',userInfo.nickName);
                tt.setStorageSync('avatar_url',userInfo.avatarUrl);
                tt.setStorageSync('gender',userInfo.gender);
                that.getIsUser();
            },
            fail(res) {
              console.log(`getUserInfo 调用失败`);
            },
          });
        }else{
       		//若无打开授权设置通过tt.openSetting接口 打开设置手动打开用户授权
            tt.openSetting({
              success(res) {
              console.log("openSetting",res)
              tt.getUserInfo({
            success(res) {
              console.log('getUserInfo 调用成功',res.userInfo);
                var userInfo = res.userInfo;
                tt.setStorageSync('userInfo',userInfo);
                tt.setStorageSync('nick_name',userInfo.nickName);
                tt.setStorageSync('avatar_url',userInfo.avatarUrl);
                tt.setStorageSync('gender',userInfo.gender);
                that.getIsUser();
            },
            fail(res) {
              console.log(`getUserInfo 调用失败`);
            },
          });
            },
          });
          tt.showToast({
            title: '请打开用户信息按钮',
            icon: 'none',
            duration: 4000
          });
        }
      }
    });
  },
  • 获取用户openid-调用tt.login
 login: function(){
    tt.login({
      success(res) {
        console.log('login调用成功',res.code);
        var code = res.code;
        //获取用户openid
        tt.request({
          url: ``, // 目标服务器url
          method: 'GET',
          dataType:'json',
          header: {
            'content-type': 'application/json'
          },
          success: (res) => {
            console.log('成功获取openid',JSON.parse(res.data.message).openid)
            tt.setStorageSync('openid',JSON.parse(res.data.message).openid);
          },
          fail(res) {
            console.log('获取openid失败');
          }
        })
      },
      fail(res) {
        console.log(`login调用失败`);
      },
    });
  },
  • 调用接口
    在这里插入图片描述
    请求地址
GET https://developer.toutiao.com/api/apps/jscode2session

请求参数
在这里插入图片描述
返回值
在这里插入图片描述
此处字节获取用户信息到此结束。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值