微信小程序学习笔记之登录API与获取用户信息操作图文详解


Posted in Javascript onMarch 29, 2019

本文实例讲述了微信小程序学习笔记之登录API与获取用户信息操作。分享给大家供大家参考,具体如下:

前面介绍了微信小程序跳转页面、传递参数获得数据,这里来分析一下登录API与获取用户信息操作方法。

【小程序登录】wx.login()

app.js:

App({
 onLaunch: function () {
  // 登录
  wx.login({
   success: function (res) {
    if (res.code) {
     //发起网络请求
     wx.request({
      url: 'https://www.msllws.top/delcode.php',
      data: {
       code: res.code
      }
     })
    } else {
     console.log('登录失败!' + res.errMsg)
    }
   }
  });
 }
})

初始化后得到了临时登录凭证code,使用wx.request()发送code,请求后台接口获取【会话密钥session_key】和【用户唯一标识openid】,满足UnionID下发条件时还可以获得【用户在开放平台的唯一标识符unionid】。

后台接收code的接口delcode.php:

<?php 
  $code = $_GET['code'];
  $appid = 'wx1aebd07bdcf596b8';
  $secret = '9ee8211007b81efd8c11d7d82d3b8658';
  $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
  $res = file_get_contents($url);

  //(省略业务逻辑:保存返回结果中的openid与用户userid关联......)

  echo $res;

 请求返回结果:

微信小程序学习笔记之登录API与获取用户信息操作图文详解

(unionid需要小程序绑定已认证的微信开放平台才可以获得)

【获取用户信息】wx.getUserInfo()

首先借助button来授权登录,login.wxml:

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

<button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
<view wx:else>请升级微信版本</view>

login.js如下:

Page({
 data: {
  //判断getUserInfo是否在当前版本可用
  canIUse: wx.canIUse('button.open-type.getUserInfo')
 },
 bindGetUserInfo(e) {
  console.log(e.detail.userInfo)
 }
})

首次点击button按钮提示微信授权,允许后调用bindGetUserInfo函数打印获得的用户信息

微信小程序学习笔记之登录API与获取用户信息操作图文详解

微信小程序学习笔记之登录API与获取用户信息操作图文详解

此时修改login.js如下,使用wx.getSetting()获得用户信息 

(调用wx.getUserInfo()之前需要调用wx.getSetting()获取用户当前的授权状态,返回结果中如果包含【scope.userInfo】,说明用户已对用户信息进行授权,可以直接调用wx.getUserInfo()获取用户信息)

Page({
 data: {
  //判断getUserInfo是否在当前版本可用
  canIUse: wx.canIUse('button.open-type.getUserInfo')
 },
 onLoad: function () {
  // 查看是否授权
  wx.getSetting({
   success(res) {
    if (res.authSetting['scope.userInfo']) {
     // 已经授权,直接调用getUserInfo获取用户信息
     wx.getUserInfo({
      success: function (res) {
       console.log(res.userInfo)
      }
     })
    }
   }
  })
 },
 bindGetUserInfo(e) {
  console.log(e.detail.userInfo)
 }
})

重新编译,页面加载获得同上用户信息:

微信小程序学习笔记之登录API与获取用户信息操作图文详解

此时再点击button按钮不再提示授权确认信息。 

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
JS自动缩小超出大小的图片
Oct 12 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
理解javascript对象继承
Apr 17 Javascript
JavaScript实现显示函数调用堆栈的方法
Apr 21 Javascript
jquery基本选择器匹配多个元素的实现方法
Sep 05 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
简单实现js倒计时功能
Feb 13 Javascript
详解JavaScript事件循环机制
Sep 07 Javascript
vue将单页面改造成多页面应用的方法
Nov 25 Javascript
webpack是如何实现模块化加载的方法
Nov 06 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
Nov 07 Javascript
使用vue打包进行云服务器上传的问题
Mar 02 Javascript
JavaScript实现无限级递归树的示例代码
Mar 29 #Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
Mar 29 #Javascript
详解a标签添加onclick事件的几种方式
Mar 29 #Javascript
node(koa2) web应用模块介绍详解
Mar 29 #Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 #Javascript
浅谈js闭包理解
Mar 28 #Javascript
微信小程序中转义字符的处理方法
Mar 28 #Javascript
You might like
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
JS查看对象功能代码
2008/04/25 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
JS数组转字符串实现方法解析
2020/09/04 Javascript
python代码制作configure文件示例
2014/07/28 Python
python版学生管理系统
2018/01/10 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
澳大利亚相机之家:Camera House
2017/11/30 全球购物
意大利体育用品和运动服网上商店:Maxi Sport
2019/09/14 全球购物
运动会通讯稿150字
2014/02/15 职场文书
个人委托书怎么写
2014/09/17 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
四则混合运算教学反思
2016/02/23 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers