成都创新互联网站制作重庆分公司

微信小程序中授权登录的示例分析

这篇文章主要介绍微信小程序中授权登录的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

成都创新互联公司拥有10多年的建站服务经验,在此期间,我们发现较多的客户在挑选建站服务商前都非常的犹豫。主要问题集中:在无法预知自己的网站呈现的效果是什么样的?也无法判断选择的服务商设计出来的网页效果自己是否会满意?成都创新互联公司业务涵盖了互联网平台网站建设、移动平台网站制作、网络推广、按需定制网站等服务。成都创新互联公司网站开发公司本着不拘一格的网站视觉设计和网站开发技术相结合,为企业做网站提供成熟的网站设计方案。

公司业务开展,最近完成了一个微信小程序的开发。场景是这样:同一微信开放平台下拥有相同主体的APP和微信小程序来完成同样的业务,用户进入app或者微信小程序时必须获取用户的unionid来确认当前的用户身份,完成登录。小程序“获取用户信息”api(getUserInfo)的调用方式和之前相比有了较大更新,优雅的实现用户授权和登录非常重要,以下是我在微信小程序授权登录相关流程在开发时候的实现思路和总结,分享如下。

一、微信小程序登录流程时序

微信小程序中授权登录的示例分析

说明:

  1. 小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器

  2. 开发者服务器以code换取 用户唯一标识openid 和 会话密钥session_key。

  3. 临时登录凭证code只能使用一次

什么是openid?

在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。——微信公众平台开发者文档
  • 普通用户的标识,对当前公众号唯一

  • 不同的公众号,同一个用户,openid不同

你可以简单的理解为

openid = hash(uid + app_id)

什么是unionid?

如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。UnionID机制说明

如果开发者在多个移动应用、网站应用和公众帐号之间有统一用户账号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,便可利用UnionID机制来满足上述需求。

  • 一个微信开放平台帐号下可以有多个移动应用,网站应用,公众账号和小程序

  • 只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。

用户在开放平台的唯一标识符

你可以简单的理解为:

unionid = hash(uid + 开放平台id)

总结下
微信针对不同的用户在不同的应用下都有唯一的一个openId, 但是要想确定用户是不是同一个用户,就需要靠unionid来区分。一般自己的后台都会有自己的一个用户表,每个用户有不同的userid。也就是说同一个用户在同一个微信开放平台下的相同主体的应用对应着相同的userid,unionid以及不同的openid。所以在用户登录进来的时候,我们只能靠微信返回给我们的unionid去判断是不是同一个用户,在去关联我们的用户表,拿到对应的userid。

二、微信小程序如何获取unionid?

绑定了开发者帐号的小程序,可以通过下面3种途径获取UnionID。

  1. 调用接口wx.getUserInfo,从解密数据中获取UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。

  2. 如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。

  3. 如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。

微信小程序中授权登录的示例分析

当用户满足条件2和3时,开发者可以直接通过wx.login获取到该用户的unionid, 否则必须调用接口wx.getUserInfo,额外需要注意的事就是妥善处理用户拒绝授权的情况。

三、登录最佳实践

  1. 调用 wx.login 获取 code。

  2. 使用 wx.getSetting 获取用户的授权情况

    • 如果用户已经授权,直接调用 API wx.getUserInfo 获取用户最新的信息;

    • 用户未授权,在界面中显示一个按钮提示用户登入,当用户点击并授权后就获取到用户的最新信息。

  3. 将获取到的用户数据连同wx.login返回的code一同传给后端

微信小程序中授权登录的示例分析

封装ajax()

在真实的业务场景中,我们希望,用户进入小程序时,未登录情况下可以正常浏览商品,对小程序有个基本的认知,不要直接弹出框要求用户授权,否则会干扰用户,导致新用户的流失,当用户需要使用一些高级功能和场景,这个时候再去要求用户授权,这样用户授权的几率会大大提高。
将登录的逻辑封装ajax
流程:
微信小程序中授权登录的示例分析

封装的意义
不再关注当前接口是否需要登录,用户是否已授权,所有请求直接调用ajax(),在必要的时候完成一切登录以及授权流程。小程序入口页面增加,业务拓展的时候,你只需要专注于业务实现。

以上是“微信小程序中授权登录的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


当前标题:微信小程序中授权登录的示例分析
转载来源:http://cxhlcq.com/article/jpeccd.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部