本节主要是说下怎样识别一个小程序的用户,需要用什么数据来做标识呢;

我们应该都知道判断是不是一个用户大部分都是通过userid来判断,如果这个用户访问的应用发送了一个请求,把userid之类的数据发给了服务器,我们可以通过这个字段来确定这是不是一个用户,如果没有这个值的话可能就是一个游客了,但是在微信里的小程序我们怎样拿到这样的id呢?

其实在小程序里当用户访问的时候我们可以借助小程序的api能力获取到一个针对当前小程序的用户id ,他是openid,而且针对同一个小程序同一个人是永远不会改变的,那我们就可以把openid作为一个用户来识别,也可以根据openid 改造成只支持已有的用户体系;

具体怎么实现呢?

这里需要借助后端api的支持,比如php java node等;api的域名需要在小程序后台进行安全域名配置才,然后线上必须是https协议;

官方提供了相关的api:小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。

首先小程序api文档提供了一个wx.login的方法,这个方法是小程序提供的,我们在调用这个api回调中处理返回的数据;

  1. 小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器,其实就是把code传给自己的后端接口

  2. 开发者服务器以code换取 用户唯一标识openid 和 会话密钥session_key。意思就是后端接口使用code获取openid喝sessionkey,sessionkey什么意思呢,简单的说下就是是对用户数据进行加密签名的密钥,可以解密数据;

之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

然后继续 下一步 就是

登录凭证校验 临时登录凭证校验接口是一个 HTTPS 接口,开发者服务器(后端api)使用 临时登录凭证code 获取 session_key 和 openid 等

这个时候时候后端api就可以获得openid了,拿到了当前访问小程序用户的标识;基本流程就是这样的;

而且这个过程是用户无感之的,我们可以在小程序启动的时候 在app onshow的声明周期内完成这个逻辑处理,将openid放到全局变量或者本地缓存;以方便后续使用;

然后有了这个能力后我们就可以完成很多有趣的功能了,比如记录邀请关系 ,分销等(微信发现了会被封的)目前很多应用内都有这样的类似的功能,本质都是一样的。

好了,我这里只是分享了一个实现的思路,具体的官方文档也写了,如果有不明白的地方可以留言交流。

今天就到这里了,请记住,我是智哥,用自己的经验分享有用的东西,拜拜!!

微信小程序之怎样识别一个小程序用户的更多相关文章

  1. Win32 程序开发:创建一个应用程序窗口

    一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSN ...

  2. 微信小程序开发——打开另一个小程序

    微信小程序打开另一个小程序,有两种方法:1.超链接:2.点击按钮. 全局配置: 跳转到其他小程序,需要在当前小程序全局配置中配置需要跳转的小程序列表,代码如下: App.json { ... &quo ...

  3. Appium(四):真实机第一个appium程序、模拟器第一个appium程序、查看元素

    1. 真实机第一个appium程序 学完了前面的知识,也将环境搭建好了,接下来我们就正式开始appium的学习了. 在做app自动化的时候,我们肯定是针对某个产品.某个软件进行测试,那么我们一定是先让 ...

  4. 微信小程序中scoll-view的一个小坑

    在微信小程序开发中,有时候swiper-view会出现显示不全的问题,我们可以用scoll-view来把它包裹下,但是要用scoll-view就一定要设置height,而我们经常是在页面中加的这个组件 ...

  5. 小程序踩过的一个小坑---解析二维码decodeURIComponent() url解码

    因为我们需要用户扫码进入小程序,每一个货柜都有一个对应的二维码,当然每个二维码里的信息也不一样.用户扫码进入小程序之后,二维码的信息会以参数q带进去,而我们只能在onLoad事件中拿到这个参数, 但是 ...

  6. 在android程序中打开另一个应用程序

    Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用. 一般我们知道了另一个应用的包名和MainActivity的名 ...

  7. iOS 如何在一个应用程序中调用另一个应用程序

    原则上iOS的沙箱原理,是阻止一个app去访问其他app的资源乃至是系统底层的资源的但是我们可以通过一种变相的方式:通过对应的URL模式和其他程序进行通讯. iOS应用之间的调用步骤: 一, 调用自己 ...

  8. Redola.Rpc 的一个小目标

    Redola.Rpc 的一个小目标 Redola.Rpc 的一个小目标:20000 tps. Concurrency level: 8 threads Complete requests: 20000 ...

  9. 【转】小波与小波包、小波包分解与信号重构、小波包能量特征提取 暨 小波包分解后实现按频率大小分布重新排列(Matlab 程序详解)

    转:https://blog.csdn.net/cqfdcw/article/details/84995904 小波与小波包.小波包分解与信号重构.小波包能量特征提取   (Matlab 程序详解) ...

随机推荐

  1. SprimgMVC学习笔记(四)—— @RequestMapping

    一.URL路径映射 @RequestMapping(value="item")或@RequestMapping("/item") 当value的值是数组时,可以 ...

  2. CF C. Three displays(DP+思维)

    http://codeforces.com/contest/987/problem/C 题意:给你两个n的序列要你根据第一个序列(严格单调递增的方式)在第二个序列里找3个数加起来,输出最小的一个. 思 ...

  3. Codeforces - 466C 双指针

    首先要判sum是否是3的整数倍 然后把符合条件的前缀和以及后缀和分别加入到静态vector中 最后扫一下j和k定位在哪然后求总长的差来更新答案 注意i j k至少隔1位,所以lower_bound是s ...

  4. 1040 有几个PAT (25 分

    字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T). 现 ...

  5. jenkins插件之火线扫描(静态代码扫描)

    参考网址: https://blog.csdn.net/oggboy/article/details/78646622

  6. SQL server 2008 r2 安装图文详解

    文末有官网下载地址.百度网盘下载地址和产品序列号以及密钥,中间需要用到密钥和序列号的可以到文末找选择网盘下载的下载解压后是镜像文件,还需要解压一次直接右键点击解如图所示选项,官网下载安装包的可以跳过前 ...

  7. linux查看当前用户登陆信息

    @(Linux基础)[linux查看当前用户登陆信息] linux查看当前用户登陆信息 作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动.有些时候,你甚至需要知道他(她)们正 ...

  8. plSql添加快捷键设置

    汉化版:工具-首选项-用户界面-编辑器-自动替换-定义文件 英文版:Tools->Perferences->Editor中Autoreplaces选择配置的shortcuts 常用快捷键设 ...

  9. Mysql 游标的定义与使用方式

    创建游标: 首先在MySql中创建一张数据表: CREATE TABLE IF NOT EXISTS `store` (   `id` int(11) NOT NULL AUTO_INCREMENT, ...

  10. Android中的下拉列表

    在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交 ...