有些小程序可以直接使用而无需登录,例如,古诗、美图欣赏、美文等,这些微信小程序往往没有登录要求,只需要打开使用就可以了。但是,很多的小程序则往往需要登录,例如,在微信小程序里面您要发表评论、您要购买产品、您要与其它朋友交互等都需要在微信小程序里面进行注册登录,我们知道在微信公众号里面有一套这样的处理机制,在小程序里面使用的是api接口机制来处理用户登录,通过api接口来获取登录信息,当然,用户在小程序里面登录,其实是比较复杂的,但是,我们不用担心这些因为腾讯已经帮我们把那些复杂的处理过程都封装成一个一个的接口api了,小程序的开发者只需要调用这些api就可以了。

在做微信公众号开发时,有时候要把用户上传的信息保存到数据库表里面,或是统计粉丝信息时,需要知道用户的openid(openid就像我们的身份证一样,是我们身份的唯一标识,同样登录公众号的粉丝也是通过这个openid来区别粉丝的)等信息,要获取openid就要使用在腾讯注册好的公众号里面的appid、secret来获取access_token ,通过access_token 来获取用户的openid。

同样的道理在微信小程序里面要想获取登录用户的唯一标识openid,不是直接就能获取到的,而是通过wx.login接口获取 登录凭证 code,然后,通过这个code来获取openid、会话密钥信息。有了opendi和会话密钥后,也就有了区别登录小程序的用户的能力,开发者可以根据业务需要对这些用户进行“处理”以满足自己业务需要。

  概括:通过wx.login获取登录凭证code,然后,换取用户登录状态信息,即获取唯一标识openid和本次登录的会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。


wx.login(OBJECT)

当接用接口wx.login成功后,就会调用一个回调函数“success”,success回调函数返回一个对象res(假设名叫res),这个对象如下所示:

 Object{code:"the code"  errMsg:"login:ok"}

所以,如果使用登录接口wx.login登录成功后,就会返回上面这个对象,我们可以在这个回调用函数里面使用res.code 来获取登录用户的登录凭证code值,有了code就可以将 code 换成 openid 和 session_key了。

参数名 类型 必填 说明
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数名 类型 说明
errMsg String 调用结果
code String 用户允许登录后,回调内容会带上 code(有效期五分钟),开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key

换取openid 和 session_key

如何换取openid和session_key呢?上面已经讲过使用code换取,如果研究过微信开发的话,就会明白换取在微信公众号里面换取粉丝的openid需要使用appid 和secret来获取access_token,然后,通过access_token 获取用户openid等信息。

在微信小程序里面其实跟在微信公众号里面类似,上面虽然多次讲用code换取oepnid和密钥,但是,光一个code还不行,还需要您注册的小程序的appid、小程序的 app secret等来获取。

具体换取openid和密钥方法:

使用腾讯提供的接口地址:

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

参数含义如下表所示:

参数 必填 说明
appid 小程序唯一标识
secret 小程序的 app secret
js_code 登录时获取的 code
grant_type 填写为 authorization_code

  相应获取代码如下所示:

//app.js
App({onLaunch: function() {wx.login({success: function(res) {if (res.code) {//发起网络请求
          wx.request({url: 'https://api.weixin.qq.com/sns/jscode2session',data: {js_code: res.code,appid:APPID,secret:SECRET,grant_type:authorization_code}})} else {console.log('获取用户登录态失败!' + res.errMsg)}}});}
})

返回参数:

参数 说明
openid 用户唯一标识
session_key 会话密钥

从上面的代码可以知道,获取微信小程序的openid是通过腾讯提供的接口地址,然后,通过wx.request接口来获取openid和密钥的。

返回说明:

//正常返回的JSON数据包
{"openid": "OPENID","session_key": "SESSIONKEY" } //错误时返回JSON数据包(示例为Code无效) { "errcode": 40029, "errmsg": "invalid code" } 

转载于:https://www.cnblogs.com/powerwu/articles/9272991.html

微信小程序api登录接口wx.login(OBJECT)相关推荐

  1. usercity 小程序_微信小程序API 用户信息 wx.getUserInfo(OBJECT)

    wx.getUserInfo(OBJECT) ​获取用户信息,withCredentials 为 true 时需要先调用wx.login接口 OBJECT参数说明: 参数名类型必填说明最低版本with ...

  2. 微信小程序注册/登录接口开发

    文章目录 后端有关说明 前端有关说明 接口设计 小程序注册/登录接口 APP 注册/登录接口 PC Web 端的注册/登录接口 小程序注册/登录序列图 校验 token 后端有关说明 登录和注册的逻辑 ...

  3. 微信小程序选择位置接口wx.chooseLocation

    2019独角兽企业重金招聘Python工程师标准>>> 一.微信小程序位置接口wx.chooseLocation 本接口使用简单,用户用户通过腾讯地图选择一个位置. 本接口能获得选择 ...

  4. 微信小程序申请地理位置接口wx.getLocation不通过的应对方案 过率很高

    1. 你好,你的小程序"xxxxxx"申请的wx.getLocation接口因你提供的申请原因/辅助图片/网页/视频内容无法确认申请接口使用场景审核不通过,建议修改后重新提交. 2 ...

  5. 微信小程序踩坑:wx.openDocument(Object object)打不开文件

    官网: wx.openDocument(Object object) | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev ...

  6. 微信小程序app.js调用wx.login

    只为梳理一下自己调用微信登陆的思路 先做一个简单的封装,将接口地址存到变量中,方便调用. 在utils中建立一个文件constant.js var rqcfg = {domin: 'https://a ...

  7. 微信小程序通过getUserProfile和wx.login获取后端的token

    后端接口要求encryptedData,iv,rawData,signature,code这个5个参数,前4个在getUserProfile方法中,后一个在wx.login中,最后在掉接口,所以我想到 ...

  8. 成语填空微信小程序,登录接口修复版

    花钱买的小程序源码,免费共享.

  9. 微信小程序授权登录接口

    1.首先接收前端传过来的code 2.带上appid,secret以及code去请求微信,获取openid,那倒openid就可以获取用户的信息了 获取到openid,将openid返回给前端,前端获 ...

最新文章

  1. 32位postman_谷歌浏览器下载安装postman教程(详细)
  2. apple给我的感受
  3. wxWidgets:wxWebRequest 示例
  4. Apollo进阶课程㊳丨Apollo平台的快速入门
  5. 新研究表明 深层神经网络的功能存在局限性
  6. easyui分页查询为什么会有下拉框_6个针对MySQL大数据量分页查询优化的锦囊妙计...
  7. 在minst数据集上定义和训练CNN卷积神经网络,代码+原理+模型更改
  8. Java书店管理系统
  9. 计算机的音量打不开,电脑的音量控制打不开怎么办
  10. 惠普星14 指纹识别功能安装
  11. ubuntu上安装http-server
  12. 几何校正(坐标变换+灰度重采样)
  13. 比较全的敏捷概念知识总结
  14. 面试题10:青蛙跳台阶
  15. 地下城与勇士正在自动连接频道服务器,自动连接频道失败 无限自动连接如何处理...
  16. 哈佛,斯坦福和麻省理工学院等投资加密货币基金
  17. 海绵宝宝的视频配音怎么制作?简单的小方法来帮忙
  18. 九度1047 1163
  19. Unity_物体旋转方法归纳
  20. 【卢森堡大学】年薪55W+RMB,计算机科学副研究员(博士后),low code 机器学习研究...

热门文章

  1. npi阶段是什么意思_NPI是什么意思啊??全称是??
  2. 趣链科技张帅博士:有望最先落地AI+区块链的是金融领域
  3. 离散余弦变换matlab
  4. 微信支付现金红包接口应用实例代码说明和DEMO详解,适合用来做微信红包营销活动、吸粉利器...
  5. 周易的基本原理-太极和八卦
  6. 3-CSS样式化文字
  7. Android App整体架构设计
  8. 我的 2021 年终总结 - 焦虑与破局
  9. FOC - SVPWM
  10. 2018 LC3 中国在京召开 众人齐聚享开源盛宴