微信小程序学习笔记之登录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 相关文章推荐
javascript入门·对象属性方法大总结
Oct 01 Javascript
JavaScript 仿关机效果的图片层
Dec 26 Javascript
浅析JavaScript中的delete运算符
Nov 30 Javascript
深入理解javascript的执行顺序
Apr 04 Javascript
使用jquery实现放大镜效果
Sep 02 Javascript
详解Javascript动态操作CSS
Dec 08 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
Vue2.0实现购物车功能
Jun 05 Javascript
vue基于mint-ui的城市选择3级联动的示例
Oct 25 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
Apr 21 Javascript
vue自定义一个v-model的实现代码
Jun 21 Javascript
Vue刷新修改页面中数据的方法
Sep 16 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
中文输入法不触发onkeyup事件的解决办法
2014/07/09 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
JavaScript中的闭包
2016/02/24 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
图书馆志愿者活动总结
2014/06/27 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
学校少先队工作总结
2015/08/12 职场文书
《司马光》教学反思
2016/02/22 职场文书