网页抓取解密(微信小程序授权登录相关流程和实现思路和总结)
优采云 发布时间: 2021-10-17 23:11网页抓取解密(微信小程序授权登录相关流程和实现思路和总结)
同一个微信开放平台下相同主题的应用程序和微信小程序完成相同的业务。用户在进入app或微信小程序时,必须获取用户的unionid,以确认当前用户身份并完成登录。小程序“获取用户信息”api(getUserInfo)的调用方式相比之前有了很大的更新。实现用户授权和优雅登录非常重要。以下是十万客小程序的开发()微信小程序中授权登录开发过程中的实现思路和相关流程总结分享如下。
一、微信小程序登录流程序列
阐明:
小程序调用wx.login()获取临时登录凭证码并发回开发者服务器
开发者服务器交换用户唯一标识符 openid 和会话密钥 session_key 的代码。推荐阅读:
临时登录凭证码只能使用一次
什么是openid?
关注者与公众号交互后,公众号可以获得关注者的OpenID(加密后的微信ID,每个用户每个公众号都有一个唯一的OpenID。不同公众号,同一个用户的openid是不同的)。——微信公众平台开发者文档
普通用户ID,当前公众号唯一
不同公众号,相同用户,不同openid
你可以简单地理解为
openid = hash(uid + app_id) 复制代码
什么是unionid?
如果开发者有多个移动应用、网站应用、公众号(包括小程序),可以使用unionid来区分用户的唯一性,因为只要是同一个微信开放平台号下的移动应用, 网站 @网站 对于应用和公众号(包括小程序),用户的unionid是唯一的。也就是说,在同一个微信开放平台下,同一个用户对于不同的应用,拥有相同的unionid。
如果开发者需要在多个移动应用、网站应用和公众号之间统一用户帐号,需要到微信开放平台()绑定公众号,然后使用UnionID机制来满足上述要求.
一个微信开放平台账号下可以有多个移动应用,例如网站应用、公众号、小程序
只要是同一个微信开放平台帐号下的移动应用、网站应用和公众号(包括小程序),用户的unionid都是唯一的。
用户在开放平台上的唯一标识
你可以简单地理解为:
unionid = hash(uid + 开放平台id) 复制代码
综上所述,微信对于不同应用的不同用户都有唯一的openId,但是判断用户是否为同一个用户,需要通过unionid来区分。通常,您的后端会有自己的用户表,并且每个用户都有不同的用户 ID。也就是说,同一个微信开放平台下,同一个用户的同一个主题的应用对应同一个userid,unionid,不同的openid。所以当用户登录时,我们只能依靠微信返回给我们的unionid来判断是否是同一个用户,然后关联我们的user表,得到对应的userid。
二、微信小程序如何获取unionid?
对于绑定开发者账号的小程序,可以通过以下三种方式获取UnionID。
调用wx.getUserInfo接口,从解密后的数据encryptedData中获取UnionID。注意这个接口需要用户授权。用户拒绝授权后,开发者应妥善处理。
如果开发者账号下有同一主题的公众号,且用户已关注该公众号。开发者可以通过wx.login直接获取用户的UnionID,无需用户重新授权。
如果开发者账号下有同一主题的公众号或手机应用,且用户已被授权登录公众号或手机应用。开发者也可以通过wx.login直接获取用户的UnionID,无需用户重新授权。
当用户满足条件2和3时,开发者可以直接通过wx.login获取用户的unionid,否则必须调用接口wx.getUserInfo。另外需要注意的是妥善处理用户拒绝授权。
三、登录最佳实践
调用 wx.login 获取代码。
使用 wx.getSetting 获取用户授权
如果用户授权,直接调用API wx.getUserInfo获取用户的最新信息;
用户未授权,界面上会显示一个按钮提示用户登录。当用户点击授权时,获取用户的最新信息。
将获取到的用户数据连同 wx.login 返回的代码一起传递给后端
包 ajax()
在实际业务场景中,我们希望用户在进入小程序时,无需登录即可正常浏览产品,对小程序有一个基本的了解。不要直接弹出框询问用户授权,否则会干扰用户,造成新用户的流失,当用户需要使用一些高级功能和场景时,此时要请求用户授权,所以用户授权的概率将大大提高。将登录逻辑封装到ajax进程中:
封装的意义不再关心当前界面是否需要登录,用户是否授权,所有请求直接调用ajax(),必要时完成所有登录和授权过程。增加了小程序的入口页面,扩展业务时只需要专注于业务变现。