在我公司的项目中,同时开发了APP和陌陌服务号,需要做到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打交道。
Paste_Image.png
看到这样的界面,是不是听到很熟悉呢?今天跟你们讲的就是跟它有关的知识点。
1、微信的用户隐私策略:
每个接入陌陌的应用(公众号、APP)就像一个独立的商店,用户使用这种应用如同逛商店,商场用会员卡辨识用户,类似的,我们依照超市名子为每位用户生成了一张专属会员卡(openid),每张会员卡只能在对应的超市能够够使用,你不能拿着家乐福的会员卡去华润万家积分。这是一种安全的授权形式,如果没有这个会员卡,直接曝露微信号,就相当于拿着身份证去逛超市,丢失一个会员卡号远比遗失身份证号要安全。那么问题来了,都是一个集团下的分店,A店和B店希望做到会员卡通用。微信在这儿做了一个打通机制,对于同一个企业,在用户属性上面加了一个企业属性(UnionID),方便同一个企业在不同的产品中辨识到同一个用户。
微信独有的 unionid机制, 用户惟一标识符,同个微信开放平台下的开发帐号下的所有应用,如果用户是同一个陌陌登陆,那么unionid是一样的。
这个机制伴随着陌陌联合登陆早已在微信开放平台(open.weixin.qq.com)推出了。获得了开放平台认证的企业,可以绑定10个手机应用、10个网站、10个公众号,他们对应的用户信息也可以互联互通。
2、微信openid和unionid宽度是不一样的
openid=28 , unionid=29
3、第三方获取陌陌openid的两种常见的方法
用户在你开发的公众号发消息,微信服务器将POST消息的XML数据包到开发者填写的URL上,这时你可以通过程序获取到改用户的openid。
以snsapi_base为scope发起的网页授权,是拿来获取步入页面的用户的openid的,并且是沉静授权并手动跳转到反弹页的。用户感知的就是直接步入了反弹页(往往是业务页面)
以snsapi_userinfo为scope发起的网页授权,是拿来获取用户的基本信息的。但这些授权须要用户自动同意,并且因为用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
什么是沉静授权和用户同意授权?
比如你去某个写字楼步入某家公司,进去大厦之前,保安会让你填写来访登记表。这个动作就等同于陌陌的用户同意授权。 如果你不是从正面进去,或者从后门、或者是溜进去,没有填写来访登记信息,你直接进去了。就好比就是沉静授权。
第一种方法获取属于陌陌被动发送给开发中填写的url的,需要用户关注公众号。第二种获取属于网页发起恳求去获取的,两种获取方法获取的openid的值是一样的,用户无需关注开发的公众号。openid微信开放平台同一个帐号下构建的在不同的公众号和不同的应用之间是不同的,但是 unionid是一致的。
Paste_Image.png
微信网页授权登陆大致流程分为四步:
网页授权获取用户基本信息也遵守UnionID机制。
如果开发者有在多个公众号,或在公众号、移动应用之间统一用户账号的需求,需要抵达微信开放平台(open.weixin.qq.com)绑定公众号后,才可借助UnionID机制来满足上述需求。
注意
我们在使用陌陌网页版本的时侯,生成陌陌二维码用户扫描登陆,此时获取的openid和上面我们所说通过微信客户端获取的openid就不是一样的,但是UnionID是一样的,这是因为,网页二维码扫描登陆是网站应用,第一种获取openid是公众号,两者属于不同应用,所以是不一样的。
UnionID机制的优势和用处