[转] 产品知识分享:外部链接分享到微信的逻辑

时间:2016-07-22 18:43:04   收藏:0   阅读:265

分享给需要的产品!如果你刚接触微信开发但不懂技术,或从未接触但想了解,那就看看吧!

一、如果做好外部链接分享到微信呢?


你的微信群里是不是到处都是分享的链接? 你是否想过为什么从外部app分享到微信的文章你直接点击就可以看?而在抢外卖红包时总是要弹出登录授权页面,然后还要求你填写手机号? 你是否思考过其中的逻辑?

本篇文章主要就几个示例展开讲述,最后提出优化方案。

1、先举几个示例

1)从美团外卖app处分享一个红包到微信中,用户在第一次领取红包之前,先得拿到微信授权确认登录后,再填写手机号,才能领取成功

2)从钉钉app处分享二维码到微信群里用以邀请成员加入公司团队 ,扫描二维码后无须微信授权直接进入邀请页面,填写个人相关信息后,加入团队

先来一堆微信公众平台开发文档说明

网页授权获取用户基本信息:

如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

关于网页授权的两种scope(应用授权作用域)的区别说明:

1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

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

3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。

2、示例分析

第一个示例中,当美团外卖红包被分享到微信时,通过微信授权可以拿到用户的基本信息(一般是:昵称、头像)。这属于网页授权中第二种scope,美团外卖需要获取用户的基本信息来显示红包数额排行榜,所以该种授权需要用户手动同意,页面上的表现就是需要点击“确认登录”,用户授权成功后,美团外卖就可以拿到该用户的基本信息(微信昵称、微信头像)。要求填写手机号是为了将领取到的红包关联到该用户的美团外卖账号(手机号),可方便进入美团外卖app直接使用。

技术分享
外卖红包分享到微信

第二个示例中,钉钉分享了二维码到微信群里,扫描后无须授权登录直接进入了页面。这属于网页授权中的第一种scope,扫描二维码后,微信静默授权并直接自动跳转到邀请页面,用户在邀请页面填写了手机号、真实姓名和验证码后可加入团队,审核通过之后直接在钉钉app上用该手机号登录就可以看见已加入的该团队。

技术分享
钉钉二维码分享到微信

微信公众平台开发时有一个openID,openID是普通用户的一个唯一的标识,只针对当前的公众号/H5页面(外部链接)有效。也就是说,同一用户在和不同的公众号/外部链接产生关注/消息交互时,该用户会和不同的公众号/外部链接之间产生联系,且建立每个联系时用户所拥有的openID是不一样的;至于这个openID是用来干什么的,第三点讲的很明白:在用户和公众号产生消息交互或关注后事件推送,才能根据用户的openID来获取用户基本信息的。也就是说只有用户和外部链接/公众号产生消息交互/关注后,建立联系时所产生的各个openID才生效,外部链接/公众号才可以用对应用户其相应的openID来获取用户基本信息。关系如图:

技术分享
关系图

该图为需要手动授权获取用户信息的情况,如果不需要获取用户信息,直接拿到openID跳转页面即可

3、关于特殊场景下的静默授权

1)如上,网页授权的第一种scope

2)对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。所以,平常你从微信号进入外部链接(H5页面)从没让你授过权!

 

二、总结+优化


1、分享外部链接到微信,无非就是这么两种情况

1)无须拿到用户信息,静默授权,直接进入页面,比较常见的如公司介绍类H5页面、下载页面等;

2)须拿到用户信息,手动授权,确认授权后进入页面,比较常见的如各种外卖红包;须根据是否需要用户信息从而选择合适的方式。

2、如果有数据交互咋办?

上述情况之后,如果还需要进行数据的交互,如领取红包这种,则产品需要考虑加入登录/注册,将数据绑定到用户的账号,方便用户进入app直接使用,否则这数据就是幽灵数据,一旦离开微信,就不知道是谁的了!

3、可以如何优化?

其实你还可以观察到,领外卖红包时,只有第一次领取红包时才需要进行用户填写手机号(登录/注册),第二次及其之后再领取红包则只要经过授权即领取成功,这是因为第一次填写后,就将相应的用户openID和手机号信息保存在了本地,这样之后用户再进入红包页面就可以识别出来不用再登录了。

将信息保存在本地这种情况其实可以用到外部链接的优化上,比如钉钉,会发生多次邀请的情况(邀请进入多个团队),钉钉保存了第一次加入团队时填写的手机号信息,所以在第二次及其之后再次打开钉钉分享出来的邀请页面时,已默认填写好手机号码,只需要填写真实姓名和验证码然后点击“加入团队”即可。钉钉还可以做的更好,真实姓名也一起保存了呗,以后就只要填写验证码然后加入团队不就好了!

技术分享
钉钉,第二次进入

当然钉钉不像外卖红包第二次及其之后进入直接领取红包那样可以直接加入团队,因为钉钉需要你确认是不是要加入,这是业务需求。

到此结束,欢迎指正!



文/小圣(简书作者)
原文链接:http://www.jianshu.com/p/9710a186ea65
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!