微信公众号与APP微信第三方登录账号打通

一个项目同时开发了APP和微信服务号,需要做到APP和微信服务号的账号互通同步,也就是说一个账号在2个地方都可以用,当然这个前提是保证你公司自己的服务器的数据库用的是同一套。

为保证用户数据的唯一性,打通app与公众号的数据,需要做如下工作:

1.申请appid,
在-登录微信开放平台--申请账号(如果没有,就去注册,不能使用公众号登录或注册)--开发者资质认证(账号中心,认证时需提交很多资料;等待认证结果)--认证通过之后,创建应用(管理中心,创建你要开发的app,等待审核);以上是app需要做的。(如果app与公众号共用一个用户数据库,则继续以下步骤:--绑定公众账号(管理中心--公众账号,有几个公众账号,就绑定几个));
注意:公众号的数据和app的数据,一定要保证放在同一个服务端,不同的话,需要登录公众号,在网页授权的功能里,把授权的服务器地址改成与app的一样(很重要这一步)

2.app上第三方登录,
配置开发,网上有很多资料,可自查;主要在授权登录成功以后,将获取到的微信用户数据传送给后台(openid和unionid最主要,不同的公众号登录openid不同,但unionid是唯一的)

3.后台方面很重要
当用户进行公众号登录时,要根据获取的openid和access_token再获取详情信息(主要是unionid),当app客户端传过来的unionid,进行判断,unionid相同就跟新此用户,不同就录入数据库;(不同的微信公众号登录,分别获取数据再获取unionid,最后再统一判断唯一性)

下面跟大家来聊聊微信的openid和unionid 。

无论是产品经理、还是H5前端工程师、客户端前端开发人员、后端开发人员,只要进行微信开发就会跟openid和unionid打交道。

openid 对当前开发者帐号唯一,openid的机制是同一个区域唯一,比如一个公众号里,你的openid是唯一的,在你的APP应用里他是唯一的,但是这2者之间是不通用的。

unionid 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。unionid 就是微信为了解决同一个开放平台下的账号的不同应用、服务号之间的数据互通的问题而出现的。

1、微信的用户隐私策略:

每个接入微信的应用(公众号、APP)就像一个独立的商店,用户使用这些应用就像逛商店,商场用会员卡识别用户,类似的,我们根据商场名字为每个用户生成了一张专属会员卡(openid),每张会员卡只能在对应的商场才能够使用,你不能拿着沃尔玛的会员卡去华润万家积分。这是一种安全的授权方式,如果没有这个会员卡,直接暴露微信号,就相当于拿着身份证去逛商场,丢失一个会员卡号远比丢失身份证号要安全。那么问题来了,都是一个集团下的门店,A店和B店希望做到会员卡通用。微信在这里做了一个打通机制,对于同一个企业,在用户属性里面加了一个企业属性(UnionID),方便同一个企业在不同的产品中识别到同一个用户。

微信独有的 unionid机制, 用户唯一标识符,同个微信开放平台下的开发账号下的所有应用,如果用户是同一个微信登录,那么unionid是一样的。

这个机制伴随着微信联合登录已经在微信开放平台(open.weixin.qq.com)推出了。获得了开放平台认证的企业,可以绑定10个手机应用、10个网站、10个公众号,他们对应的用户信息也可以互联互通。

2、微信openid和unionid长度是不一样的

openid=28 , unionid=29

3、第三方获取微信openid的两种常见的方式

1、)静默授权,用户无感知

用户在你开发的公众号发消息,微信服务器将POST消息的XML数据包到开发者填写的URL上,这时你可以通过程序获取到改用户的openid。
以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

2、)用户手动同意授权
通过微信专有网页授权页面获取(如上图的绿色界面),需要用户手动点击确认。

以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwyzwp.html