一,发送请求携带 code 到后台换取 openid

var that = this;
wx.login({
success(res) {
console.log(res);
var code = res.code
wx.request({
url: 'http://localhost/index/users/code2seesion',
method: "post",
data: {
code
},
success: function (res) {
console.log(res.data.openid);
that.setData(res.data);
}
})
}
})

1、第一步打印出 wx.login 成功回调后的res console.log(res),下面是打印出的内容

2、提取 code
var code = res.code;

3、发送 post 请求到后台换取 openid 携带参数 data:{code} 打印成功回调console.log(res),下面是打印出的部分内容:

可以清楚的看到session_key、openid、errMsg;这些参数在接下来的操作中有着重要的作用;

4、保存data内容 里面包含 openid 和 session_key :that.setData(res.data);

二、以上操作完成并将参数保存下来之后,就可以开始获取手机号了:
~获取手机号是有特殊按钮类型

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>
getPhoneNumber: function (e) {
var that = this;
console.log(e.detail.errMsg == "getPhoneNumber:ok");
if (e.detail.errMsg == "getPhoneNumber:ok") {
wx.request({
url: 'http://localhost/index/users/decodePhone',
data: {
encryptedData: e.detail.encryptedData,
iv: e.detail.iv,
sessionKey: that.data.session_key,
uid: "",
},
method: "post",
success: function (res) {
console.log(res);
}
})
}
},
1、可以打印出 自己是否允许授权 console.log(e.detail.errMsg == "getPhoneNumber:ok");
如果允许:true 如果拒绝:false
 
2、判断用户是点击允许还是拒绝 这里的请求 需求携带四个必备参数 ,可以打印出e.detail ~console.log(e.detail)
如果为 true 就开始 post 请求后台 携带上 encryptedData 、iv 、sessionKey 、uid
 
3、打印出成功的回调函数 success: function (res) {console.log(res);} 可以看到里面有了~phoneNumber 手机号了
 
getPhoneNumber(e) {
wx.showLoading({
title: '加载中',
mask: true
});
var _this = this;
var code = '';
var openId = '';
wx.login({
success(res) {
console.log(res);
code = res.code;
api.expiry.login({ code: res.code }).then(data => {
console.log('ffff');
console.log(data);
openId = data.openId;
if (e.$wx.detail.errMsg == 'getPhoneNumber:ok') {
let obj = {
// code: wx.getStorageSync('code'),
code: code,
iv: e.$wx.detail.iv,
encryptedData: e.$wx.detail.encryptedData,
// openId: this.$app.$options.globalData.openid
openId: openId
};
api.expiry.getPhoneNumer(obj).then(data => {
console.log('phone number', data);
_this.phone = data.phone;
wx.hideLoading();
});
} else if (e.$wx.detail.errMsg == 'getPhoneNumber:fail user deny') {
wx.showToast({
title: '手机号码获取失败,请手动输入',
icon: 'none',
duration: 3000
});
return;
}
});
}
});
},

微信小程序登录获取手机号的更多相关文章

  1. 微信小程序授权获取手机号

    wxml: <text>pages/logins/logins.wxml</text> // <button open-type="getPhoneNumber ...

  2. nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId

    nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId 前言: 我准备用nodejs+koa+uniapp实现一款餐饮点单小程序,以及nodejs+koa+vue实现后端管理 ...

  3. 微信小程序登录,获取code,获取openid,获取session_key

    微信小程序登录 wx.login(Object object) 调用接口获取登录凭证(code).通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session ...

  4. 微信小程序登录方案

    微信小程序登录方案 登录程序 app.js 调用wx.login获取code 将code作为参数请求自己业务登录接口获取session_key 存储session_key 如果有回调执行回调 App( ...

  5. 微信小程序如何获取openid

    微信小程序如何获取openid wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId // ...

  6. 基于Shiro,JWT实现微信小程序登录完整例子

    小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...

  7. 微信小程序登录JAVA后台

    代码地址如下:http://www.demodashi.com/demo/12736.html 登录流程时序登录流程时序 具体的登录说明查看 小程序官方API 项目的结构图: springboot项目 ...

  8. 微信小程序登录对接Django后端实现JWT方式验证登录

    先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3. ...

  9. 微信小程序后台获取用户的opeid

    1.微信小程序后台获取登录用户的openid,首先微信小程序将code传给后台服务器 wx.login({ success: function (res) { var code = res.code ...

随机推荐

  1. SQL-W3School-高级:SQL AUTO INCREMENT 字段

    ylbtech-SQL-W3School-高级:SQL AUTO INCREMENT 字段 1.返回顶部 1. Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INC ...

  2. BAPI_GOODSMVT_CREATE物料凭证增强字段

    项目MSEG 的 BAPI 表增强结构  BAPI_TE_XMSEG 抬头MKPF 的 BAIP 表增强 BAPI_TE_XMKPF 1. 在结构BAPI_TE_XMSEG中appending str ...

  3. Nginx+Keepalived高可用负载均衡

    转自 https://www.jianshu.com/p/da26df4f7d60 Keepalived+Nginx实现高可用Web负载均衡 Master backup vip(虚拟IP) 192.1 ...

  4. Spring Security(2):过滤器链(filter chain)的介绍

    上一节中,主要讲了Spring Security认证和授权的核心组件及核心方法.但是,什么时候调用这些方法呢?答案就是Filter和AOP.Spring Security在我们进行用户认证以及授予权限 ...

  5. Jmeter 逻辑控制器 之 Switch Controller

    一.认识 Switch Controller Switch Controller:开关控制器,通过其下样例顺序数值或名称 控制执行某一个样例  二.通过样例顺序数值控制执行样例  三.通过样例名称控制 ...

  6. 使用canal通过mysql复制协议从binlog实现热数据nosql缓存(1)

    binlog: mysql在运行过程中执行的DML(增删改)操作都会以二进制形式记录在binlog中 canal server: canal server作为从数据库(slave)向主数据库发送dum ...

  7. shell脚本中set -e作用

    最近学习shell脚本想到一个问题,如果脚本中出现了一条异常语句,甚至可以影响整个脚本的使用,那么是否有一旦出现问题就可以及时停止的方法呢?在shell脚本中set命令就可以轻松实现.set命令的-e ...

  8. CSharp实体生成器

    专门为C#开发人员定制的一个实体生成器,以往的生成器功能达到了,但是很多细节未考虑到,所以我借鉴“先人”的一些已有的东西,重新定制了一个.当然,需要源码的同学,直接使用IL Spy这个小工具就可以看到 ...

  9. web漏洞

    *参考网站 https://cxsecurity.com/ https://www.exploit-db.com/ https://www.seebug.org/ http://www.securit ...

  10. [Cometoj#3 C]子序列子序列子序列..._动态规划_数论

    子序列子序列子序列... 题目链接:https://cometoj.com/contest/38/problem/C?problem_id=1542 数据范围:略. 题解: 神仙题,感觉这个题比$D$ ...