微信客户端授权登录开始邀请第三方应用内测了,我们虽然是个创业团队,但很幸运的成为了该功能的早期内测用户,经过半年多的试用,积累了不少的经验和教训,分享出来,希望对大家有所帮助。
微信授权登录的优势有哪些?
1. 数亿微信用户直接登录, 免去繁琐注册流程。
2. 支持获取用户基本信息,免去用户填写个人资料的烦恼,并且内容真实可靠。
一个iOS应用使用微信授权登录的过程应该是怎样的?
申请微信授权登录→微信sdk接入→多应用账号打通→提交AppStore审核→上线
为什么提交AppStore审核也列入了这个过程?
因为这里坑最多,我们一开始缺乏经验,足足在这步浪费了差不多两个月的宝贵时间!
下面,我们就按照这个过程,逐一进行介绍。
第一步:申请微信授权登录
微信授权登录的申请条件?
只要应用已经获得了微信支付的权限,就可以提交申请。
具体怎么申请,官方有很详细的介绍,这也不是本文的重点,所以就直接略过了。附上微信开放平台的地址:https://open.weixin.qq.com/
在这里要重点指出的是:
1. 客户端的授权登录是在微信开放平台申请的。
2. web端的授权登录除了要在微信开放平台申请外,还要申请微信公众平台的服务号并完成认证,获取高级接口的访问权限。
修正:微信的伙伴们反馈了最新的进展,web端的授权登录现在可以不用公众号了。
第二步:微信sdk接入
如果你的申请被通过,会得到一个包含有微信授权登录的SDK包,这个包同时也包含了基础的分享功能。具体的接入方法,微信会在SDK包中提供详细的说明文档,按照文档进行接入即可。
在这里要重点指出的是:
1. 授权成功后返回的OpenID仅仅是应用内唯一标识,同一用户在不同应用进行授权,返回的OpenID是不一样的!
2. 即使是同一个应用,同一个用户在移动应用授权登录和在web应用授权登录,返回的OpenID也是不一样的!
OpenID都不一样,那我的产品是一系列应用,想统一账号怎么办?
别急,继续往下看,微信已经提供了解决方案的。
第三步:多应用打账号打通
如果你们的产品是一个系列应用,又或者同时有移动应用和web应用,那么按照微信的规定,每个应用都必须在开放平台进行登记和审核(需要绑定包名,所以不能多个应用使用同一个签名),这也就意味着这些应用每个都是独立的应用!前面说过,这样会导致这一系列应用当用户授权后,返回的OpenID都不一样,无法唯一标识用户!这时就需要使用UnionID机制来解决这个问题。
这篇文章我觉得说得不错,整理了一些微信营销的各种疑问,认真看下去,你会学到很多。文章里话说简单,做起来实属不易,开始难,坚持更难。很多时候事情就是这么简单,看起来简单,说起来简单,做起来还是简单,但一直做上去就难上加难了。能够做到学以致用,天下真的没有难做的生意。
做微电商或者说接触微信营销的朋友应该都知道柴公子,其实他就是一个做鸭的,而且四代做鸭!柴公子在40多天内利用微信做到月流水5万,卖了一千多盒板鸭,柴公子的微信营销的首要理念是:人是1,产品是0。他的分享共分七大点,自我分析、前期准备、营销策略、增强信任、如何增粉、注意事项、其他要点。
一、自我分析
1.好友数量
微信上要有一定的微信好友,如果只有几十个,是无法做微信营销的,前期至少要有200个以上,必须还是高质量的好友,才能产生一定的效果。当然也可以通过后期的一些努力增加你的微信好友。
2.好友印象
你也许会说,不就卖个东西,跟你的个人品格有毛线关系啊、如果是这样,那你就错了,如果你是摆地摊,或者是在淘宝上也许不需要,但在微信上卖东西,可能就有关系了。也就是说你平时和朋友、客户、同学等关系处理的如何,你在朋友里面的口碑是否好,大家对你评价如何,这一点也是非常重要的,大多数的生意都是先从身边的朋友开始,如果朋友对你都不认可,都不支持,你怎么说服其他人?
3.社会资源
社会资源需要一定的阅历,对于刚刚毕业的大学生来说比较难,但是对于那些已经工作几年的朋友,你除了自己的同事以外,还没有认识和结交一些其他的朋友,如客户、合作伙伴建立良好的关系,有一定的社会人脉资源,对你这个微信营销会起着非常重要的作用,因为他们都是社会的主流,有钱,有人脉,能够得到他们的支持,会取得一个很好的效果。
4.文案功底
微信营销都是靠你的文字打动人,如果你不会用文字描述,只发图片,根本无法打动别人。一个好的产品,是需要一个会说话的文字去支撑它,这样才有生命力。如卖衣服的朋友,你直接将衣服图片和衣服的颜色、款式、码数放上去,你觉得会有效果吗?你经常这样,你的朋友都厌烦了,关系好的朋友还好,如一般关系或者不认识的朋友,他们肯定会把你拉入黑名单。所以,做微信营销,必须有一定的文字功底,不需要你的文案有多好,至少你要把这个产品描述清楚,说得明白。
5.营销能力
营销能力也是一个不可无视的,小米为什么能成功,就是他的营销能力强,在网络上这个是非常重要的,我们都说了是做微信营销,所以当然离不开营销二字。
二、前期准备
1.好的名字
一个好的名字,方便传播,可以让你的知名度提升几倍。如买米的富哥,微信名叫富哥卖米,一看就知道是卖米的;如农味网的啊文,这个一看就知道是做农产品的。微信的名字建议是你所从事的行业或产品加你的个人名称,不建议名称用什么微店、英文名称、很难识别的。此外,微信号不要太复杂,建议用数字,或者简单英文字母,方便人家加你微信。
2.选好产品
做微信营销,选品非常重,建议选品最好能具备以下几个特点:
①毛利高:保证有50%的毛利,甚至越高越好。
②竞争少:如地方特产,衣服,鞋子建议不要在微信上销售,因为太多了。
③质量好
④大众需求:大家都可以有需求,如吃的产品,人人都愿意尝试,如果是衣服,鞋子,要不不满意款式,要不就是不合适等。
⑤易传播:在微信上不方便写太多字,放太多图片,所以产品能再200个字以内说清楚是最好的,也方便大家记住。
3.熟悉产品
在卖产品之前,你自己要非常熟悉产品,并且能够把产品的卖点提炼出来。如我家板鸭,它的卖点是什么?我把它提炼出来主要有几点:
①散养土板鸭,健康、安全、好吃。
②传统工艺制作,无任何添加有害物质。
③高档礼盒包装,送礼高大上。
4.产品载体
微信上有个缺点,就是不方便下单、付款,那怎么办呢?所以你要做以下的准备:
①开家淘宝店;②申请微信公众号;③请专业的公司开发微店;④准备多个银行账户。
5.其他问题
①发货问题:产品包装、寻找快递等。
②售后问题:售后流程、售后问题等。
③产品的素材:文字、图片等。
三、营销策略
1.个人品牌
既然能和你成为朋友,能够加入你的朋友圈,肯定是认可你这个人,或者是想和你成为朋友。不管是认识的,还是不认识的。所以你要别人知道你是怎么的一个人,知道微信背后的是一个活生生的人。做销售,首先要把自己推销出去。所以你的微信不仅只发产品的宣传内容,还要把你的个人生活、生活感悟、其他分享,让人家知道这个微信后面的是一个怎么样的人。分享的东西必须是正面的、积极的、正能量的,塑造你的个人品牌。
2.情感策略
大家知道了你是一个怎么样的人,对你产生了好感,这个适合你就可以很好的利用人家对你的好印象,进行一些产品的推销,要慢慢的,循序渐进,不要一天发很多产品的宣传,这样很容易让人家反感。
3.分享技术
当朋友购买你的产品之后,你要第一时间分享出去,让人家看到原来有这么多人购买,并且还有一个不错的购物体验,购买后和收到货后都要分享出去。分享的时候一定要把订单信息、对话内容截图放上去,显得更真实,这是一个刺激其他朋友购买的有效方式。如某个朋友帮你买了,你分享了,而另一个朋友和你以及这个购买的都是朋友,他看到后,觉得应该要支持一下你。
4.互动环节
在朋友圈里,你要让朋友圈好友知道你的存在,如你的好友发了一些不错的内容或者信息,你要给予评论,如果不知道评论什么至少也要点一个赞。其实你的朋友,无非是想知道有多少人是在关注他,如果你经常和人家互动,自然会对你产生好感,这个是非常重要的一个行为。经常发布一些微信和你的朋友进行互动,如点赞送礼等。
5.强推技术
这个是要根据不同的朋友而定,一般是比较好的朋友,开玩笑的方式进行销售,这个一定要掌握好一个度,不要太强求,适可而止。
6.学会感恩
不管是哪个朋友买了,买了多少,你都要感谢人家,并且要当着全世界的人感谢,人家支持你,也许不是因为你的产品好,而是认可你的人,所以你要知道,他的这次购买,我们是欠他们一个人情,记得哪天你要偿还。一个懂得感恩的人,才能得到人家的尊重和继续的帮助。
一切微信营销始于关注!
随着微信用户不断地增加,也许未来微信也会成为新一轮移动社交营销的热门平台。现在,微信也不仅仅只是“约炮利器”了,很多民营医院开始尝试微信营销。
医院微信的优势
1、微信是用GPS功能定位的!误差在500米内,是以手机为中心来定位的!查找范围客户集中于1公里以内的客户源。客户源是流动的。
2、可以起到医院的广告宣传做用,增加了客户源。
3、广告宣传的三个方面来宣传的!一、微信的头像 二、微信的用户名 三、微信的个性签名来做广告的!
4、微信几乎是不产生费用的!只会产生流量费用所以成本是很低的!
医院在几天的运作中发现的问题
1、微信挺适合民营医院的妇产科医院,男科医院,整形医院,健康管理中心营销。
2、每天在微信的耗时和摇动时间上大概在12个小时。客户一般集中在早晨的上班时间、午休时间、下班时间、午夜时间。
3、大部分客户只是过来了解 ,一天咨询大概在10人左右,打算预约的一般在2人左右。
4、配合全院营销和绩效,医院微信推广效果好。
微信常用功能解说
1、草根广告式 – 查看附近的人
签名栏是腾讯产品的一大特色,用户可以随时在签名栏更新自己的状态签名。也有许多人利用签名打入强制的广告,也有一定用户可以看到。但是这种单调的硬性广告,通常只有用户的联系人或者好友才能看到,那么有什么方式可以让更多陌生人看到呢?结合微信的另一个特色应用,利用地理位置定位的“查看附近的人”便可以做到。
在微信中,有一栏叫做“找朋友”,里面有个“查看附近的人”的插件,用户点击后可以根据自己的地理位置查找到周围的微信用户。
在这些附近的微信用户中,除了显示用户姓名等基本信息外,还会显示用户签名档的内容。所以也有许多用户利用这个免费的广告位为自己的产品打广告。
试想一下,如果你雇佣一批人后台24小时运行微信,然后在人流最旺盛的几个地方蹲点或者溜达几圈;如果“查看附近的人”使用者足够多,这个广告效果恐怕不会比部分地区的户外广告差。随着微信用户数量的上升,可能这个简单的签名栏会真的变成移动的“黄金广告位”。
2、品牌活动式 – 漂流瓶
微信的用户逐月增加,因此不少大品牌也在尝试利用微信推广。其中,漂流瓶便是商家看重的一个微信活动应用。
漂流瓶实际上是移植至QQ邮箱的一款应用,该应用在电脑上广受好评,许多用户喜欢这种和陌生人的简单互动方式。移植到微信上后,漂流瓶的功能基本保留了原始简单易上手的风格。
漂流瓶主要有两个简单的功能:
1、“扔一个”,用户可以选择发布语音或者文字然后投入大海中,如果有其他用户“捞”到则可以展开对话;
2、“捡一个”,顾名思义则是“捞”大海中无数个用户投放的漂流瓶,“捞”到后也可以和对方展开对话,但是每个用户每天只有20次捡漂流瓶的机会。
在这个微信应用中,笔者遇到的则是招商银行的“爱心漂流瓶”用户互动活动案例。
在招行展开活动期间,笔者每捡十次漂流瓶便基本上有一次会捡到招行的爱心漂流瓶,相信这也是微信和招行进行战略合作过程中对漂流瓶的参数进行了更改。观看活动,这也算是一次三方合作的活动,包含腾讯、招行和壹基金。
和招商银行进行简单的互动就可以贡献自己的一份爱心,相信也会有不少用户加入到这种简单却又可以做善事的活动当中。但是,这种频繁却缺乏一定活性的活动,很容易让用户产生参与疲劳。如果用户每一次捡到招行的爱心漂流瓶都会产生不同的活动或者能有一些小小的语音游戏,或许会提高用户参与互动的积极性。
3、O2O折扣式 – 二维码扫描
这个功能原本是“参考”另一款国外社交工具“LINE”,用来扫描识别另一位用户的二维码身份从而添加朋友。但是二维码发展至今其商业用途越来越多,所以微信也就顺应潮流结合O2O展开商业活动。
将二维码图案之余取景框内,微信会帮你找到好友企业的二维码,然后你将可以获得成员折扣和商家优惠。
移动应用中加入二维码扫描,然后给用户提供商家折扣和优惠,这种O2O方式早已普及开来。而类似的APP在应用超市中也多到让你不知如何选择。微信的杀手锏和竞争优势是什么,不言而喻就是几亿的用户数。腾讯很霸道,但这也是他的资本。
4、社交营销式 – 开放平台朋友圈
如果上面三种方式都不能够引起你在微信上做品牌推广的兴趣,那么接下来微信的开放平台或许值得你关注。
微信开放平台是微信4.0版本推出的新功能,应用开发者可通过微信开放接口接入第三方应用。还可以将应用的LOGO放入微信附件栏中,让微信用户方便地在会话中调用第三方应用进行内容选择与分享。
首批登录微信开放平台的用户美丽说可以将自己在美丽说中的内容分享到微信中,美丽说也是这批合作方中唯一一个以女性用户为主的应用。随着美丽说的进驻,微信第一轮开放平台也正式试水。
在美丽说和微信的合作中,我们可以看到社交分享的价值存在。用户通过微信,把一件美丽说上面的商品一个接一个传播开去。也就是我们经常提及社会化媒体的口碑营销,只要是有价值的东西,用户都不会吝啬和朋友分享,电脑上如此,移动设备上更是如此。
js如何判断用户是否是用微信浏览器
2014-09-04 09:17 | 45770人阅读 | 来源 上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk。然后就发生了问题,经过测试,发现用微信扫一扫打开的页面点击下载按钮下载不了 apk,后百度之,原来是微信内置浏览器屏蔽了下载链接,后面和需求方沟通,需求改为如果用户是用微信内置浏览器打开的,则提示用户换一个浏览器打开页面,否则下载不了 apk。那么该如何判断用户是否是用微信浏览器呢?
我们知道 js 可以通过 window.navigator.userAgent 来获取浏览器的相关信息,比如:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36,那么我们也可以通过该方法来获取微信内置浏览器的相关信息:Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11d201 MicroMessenger/5.3。根据关键字 MicroMessenger 来判断是否是微信内置的浏览器。判断函数如下:
代码如下:
function isWeiXin(){
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
return true;
}else{
return false;
}
}
demo:
代码如下:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>判断是否是微信内置浏览器</title>
</head>
<body>
<h1>如果用微信浏览器打开可以看到下面的文字</h1>
<p></p>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
if(isWeiXin()){
var p = document.getElementsByTagName('p');
p[0].innerHTML = window.navigator.userAgent;
}
}
function isWeiXin(){
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
return true;
}else{
return false;
}
}
</script>
说明:可以将上面的 demo 放到服务器上,然后生成个二维码扫一扫。
做手机端的前端开发,少不了对手机平台的判断。如,对于app下载,就要判断在Android平台下就显示Android下载提示;在iOS平台下就显示iOS下载提示。
今天就为大家介绍一下用js判断手机客户端平台及系统平台的方法:
<script type="text/javascript">//手机端判断各个平台浏览器及操作系统平台function checkPlatform(){
if(/android/i.test(navigator.userAgent)){
document.write("This is Android‘browser.");//这是Android平台下浏览器 }
if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)){ document.write("This is iOS‘browser.");//这是iOS平台下浏览器 } if(/Linux/i.test(navigator.userAgent)){
document.write("This is Linux‘browser.");//这是Linux平台下浏览器 } if(/Linux/i.test(navigator.platform)){
document.write("This is Linux operating system.");//这是Linux操作系统平台 }
if(/MicroMessenger/i.test(navigator.userAgent)){
document.write("This is MicroMessenger‘browser.");//这是微信平台下浏览器 }}
$(document).ready(function(){ alert(navigator.platform); checkPlatform(); });</script>
在这里就不做pc端操作系统平台的判断了,怎么判断也说下方法,如用document.write(navigator.platform);就可以获得操作系统平台。在win32下就会显示Win32,;在Win64下就会显示Win64等。
通过 JavaScript 判断 ?
1 function is_weixin(){
2 var ua = navigator.userAgent.toLowerCase();
3 if(ua.match(/MicroMessenger/i)=="micromessenger") {
4 return true;
5 } else {
6 return false; 7 }
8 }
通过 PHP 判断app微信授权登录怎么识别
?
1 function is_weixin(){app微信授权登录怎么识别
2 if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) { 3 return true;
4 }
5 return false;
6 }
有两种情况:
client端区分
添加js代码
1. var browser={
2.
3. versions:function(){
4.
5. var u = navigator.userAgent, app = navigator.appVersion; 6.
7. return {//移动终端浏览器版本信息
8.
9. trident: u.indexOf('Trident') > -1, //IE内核
10.
11. presto: u.indexOf('Presto') > -1, //opera内核
12.
13. webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
14.
15. gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 16.
17. mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端
18.
19. ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 20.
21. android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
22.
23. iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
24.
25. iPad: u.indexOf('iPad') > -1, //是否iPad
26.
27. webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 28.
29. };
30.
31. }(),
32.
33. language:(navigator.browserLanguage || navigator.language).toLowerCase() 34.
35. }
36.
37. document.writeln("语言版本: "+browser.language);
38.
39. document.writeln(" 是否为移动终端: "+browser.versions.mobile);
40.
41. document.writeln(" ios终端: "+browser.versions.ios);
42.
43. document.writeln(" android终端: "+browser.versions.android);
44.
45. document.writeln(" 是否为iPhone: "+browser.versions.iPhone);
46.
47. document.writeln(" 是否iPad: "+browser.versions.iPad);
48.
49. document.writeln(navigator.userAgent);
50.
51. </script>
server端区分
需要实现的逻辑示例:
If ( QQ浏览器) {
//处理方案A
} else {
//处理方案B
}
key is Host, value is 10.10.42.132:9002
key is Connection, value is keep-alive
key is Upgrade-Insecure-Requests, value is 1
key is User-Agent, value is Mozilla/5.0 (Linux; Android
6.0.1; vivo X9 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043220 Safari/537.36 MicroMessenger/6.5.7.1041 NetType/WIFI Language/zh_CN
key is Accept, value is text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/wxpic,image/sharpp,*/*;q=0.8
key is Accept-Encoding, value is gzip, deflate
key is Accept-Language, value is zh-CN,en-US;q=0.8 key is Cookie, value is JSESSIONID=1ci2brinz9khl1w2efvdqgvoft
总结:
1. 在Android下,返回
Mozilla/5.0 (Linux; Android 6.0.1; vivo X9 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043220 Safari/537.36 MicroMessenger/6.5.7.1041 NetType/WIFI Language/zh_CN
可以看到,微信浏览器为 MicroMessenger ,后面还有其版本号
2. 在iphone下, 返回
Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411 MicroMessenger/6.5.3 NetType/WIFI Language/zh_CN
3. Android QQ浏览器,返回
Mozilla/5.0 (Linux; U; Android 6.0.1; zh-cn; vivo X9 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.5 Mobile Safari/537.36
可以看到,QQ浏览器为 MQQBrowser
4. Iphone QQ浏览器,返回
Mozilla/5.0 (iPhone 6; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 MQQBrowser/7.4.1 Mobile/12B411 Safari/8536.25 MttCustomUA/2 QBWebViewType/1
5. Weichat PC端,window , 返回
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.373.400 QQBrowser/9.0.2524.400
6. Weichat PC端,ios, 返回
7. Android qq, 返回
Mozilla/5.0 (Linux; Android 6.0.1; vivo X9 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043220 Safari/537.36 V1_AND_SQ_6.7.1_500_YYB_D QQ/6.7.1.3105 NetType/WIFI WebP/0.3.0 Pixel/1080
8. IOS qq 返回
mozilla/5.0 (iphone; cpu iphone os 8_1 like mac os x) applewebkit/600.1.4 (khtml, like gecko) mobile/12b411 qq/5.1.1.97
总结:微信浏览器访问
String userAgent =
request.getHeader("User-Agent").toLowerCase(); if (userAgent.indexOf("micromessenger") > 0) { logger.info("weichat browser request..."); }
利用Wireshark软件对微信协议的分析
——QPIC
贾冰杰 1120101251 全然 1120101259
王浩峰 1120101261 (组长) 谢青梅 1120101262 闫郡 1120101263
目录
一.实验规划 ——03
二.实验内容
步骤1. 配置虚拟AP: 步骤2. 分析微信的登陆认证过程 步骤3. 分析微信的普通聊天过程 步骤4. 微信-附近的人
三. 实验结论:关于微信协议
1.微信通过内置浏览器和服务器交互数据。2.微信的数据传输未加密 3.微信不同功能有独立的服务器 4.关于”微信与运营商大战”的思考
参考文献
——04 ——05 ——06 ——07 ——09 ——09 ——10 ——11 ——12
1.接入手机,通过wireshark抓取微信数据包。
2.分析微信的登陆认证过程 3.分析微信的普通聊天过程 3.分析微信的典型应用——附近的人 4.总结:微信的协议
步骤1、配置虚拟AP:
由于微信的pc网页版本不容易操作,针对本次分析,我们使用Android手机系统下的微信客户端进行操作。通过手机连接至pc虚拟的无线网络进行微信的连接,这样通过wireshark软件进行抓包。
win7系统下可以很容易将无线网卡设置为虚拟AP,供其他无线设备接入。 配置脚本如下:
#Vitual_Wifi_setup.bat
netsh wlan set hostednetwork mode=allow ssid="HappyBoy" key=****** #在GUI界面下,将正在使用的某个网络连接共享给该虚拟AP. netsh wlan start hostednetwork netsh wlan show hostednetwork
将手机接入后,可以看到: Number of clients为1.
打开wireshark,能看到在接口列表中已经有虚拟AP了(如图)。手机接入后,打开微信app,点击开始抓包,就能抓到微信数据包了。
步骤2. 分析微信的登陆认证过程:
打开微信客户端,微信开始登录,可以看到手机分配到的IP为192.168.137.87,AP站点的IP为192.168.137.1
第一包数据 是一个域名查询,微信客户端向网络查询微信服务器,域名为long.weixin.qq.com的IP地址;
第二包数据 是ARP地址解析,AP站点向全网广播,询问192.168.137.87对应的MAC地址;
第三包数据 是ARP应答,手机告诉AP站点自己的MAC地址;
第四包数据 是第一包DNS查询的应答,将该包数据展开,可以看到:
可以看到,查询到微信域名long.weixin.qq.com的多个服务器IP。 接下来TCP的通信过程表明,微信客户端选择了IP为120.204.201.154的主机进行数据传送。
微信⽹页授权
微信⽹页授权
如果⽤户在微信客户端中访问第三⽅⽹页,公众号可以通过微信⽹页
授权机制,来获取⽤户基本信息,进⽽实现业务逻辑。
关于⽹页授权回调域名的说明
1、在微信公众号请求⽤户⽹页授权之前,开发者需要先到公众平台
官⽹中的“开发 - 接⼝权限 - ⽹页服务 - ⽹页帐号 - ⽹页授权获取⽤户
基本信息”的配置选项中,修改授权回调域名。请注意,这⾥填写的
是域名(是⼀个字符串),⽽不是URL,因此请勿加 http:// 等协议
头;app微信授权登录怎么识别
2、授权回调域名配置规范为全域名,⽐如需要⽹页授权的域名为:
,配置以后此域名下⾯的页⾯
/music.html 、 /login.html 都
可以进⾏OAuth2.0鉴权。但、
、
3、如果公众号登录授权给了第三⽅开发者来进⾏管理,则不必做任
何设置,由第三⽅代替公众号实现⽹页授权即可
关于⽹页授权的两种scope的区别说明
1、以snsapi_base为scope发起的⽹页授权,是⽤来获取进⼊页⾯的
⽤户的openid的,并且是静默授权并⾃动跳转到回调页的。⽤户感知
的就是直接进⼊了回调页(往往是业务页⾯)
2、以snsapi_userinfo为scope发起的⽹页授权,是⽤来获取⽤户的
基本信息的。但这种授权需要⽤户⼿动同意,并且由于⽤户同意过,
所以⽆须关注,就可在授权后获取该⽤户的基本信息。
3、⽤户管理类接⼝中的“获取⽤户基本信息接⼝”,是在⽤户和公众
号产⽣消息交互或关注后事件推送后,才能根据⽤户OpenID来获取
⽤户基本信息。这个接⼝,包括其他微信接⼝,都是需要该⽤户(即
openid)关注了公众号后,才能调⽤成功的。
关于⽹页授权access_token和普通access_token的区别
1、微信⽹页授权是通过OAuth2.0机制实现的,在⽤户授权给公众号
后,公众号可以获取到⼀个⽹页授权特有的接⼝调⽤凭证(⽹页授权
access_token),通过⽹页授权access_token可以进⾏授权后接⼝
调⽤,如获取⽤户基本信息;
2、其他微信接⼝,需要通过基础⽀持中的“获取access_token”接⼝
来获取到的普通access_token调⽤。
关于UnionID机制
1、请注意,⽹页授权获取⽤户基本信息也遵循UnionID机制。即如果
开发者有在多个公众号,或在公众号、移动应⽤之间统⼀⽤户帐号的
需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号
后,才可利⽤UnionID机制来满⾜上述需求。
2、UnionID机制的作⽤说明:如果开发者拥有多个移动应⽤、⽹站应
⽤和公众帐号,可通过获取⽤户基本信息中的unionid来区分⽤户的
唯⼀性,因为同⼀⽤户,对同⼀个微信开放平台下的不同应⽤(移动
应⽤、⽹站应⽤和公众帐号),unionid是相同的。
关于特殊场景下的静默授权
1、上⾯已经提到,对于以snsapi_base为scope的⽹页授权,就静默
授权的,⽤户⽆感知;
2、对于已关注公众号的⽤户,如果⽤户从公众号的会话或者⾃定义
菜单进⼊本公众号的⽹页授权页,即使是scope为snsapi_userinfo,
也是静默授权,⽤户⽆感知。
具体⽽⾔,⽹页授权流程分为四步:
1、引导⽤户进⼊授权页⾯同意授权,获取code
2、通过code换取⽹页授权access_token(与基础⽀持中的
access_token不同)
3、如果需要,开发者可以刷新⽹页授权access_token,避免过期
4、通过⽹页授权access_token和openid获取⽤户基本信息(⽀持
UnionID机制)
第⼀步:⽤户同意授权,获取code
在确保微信公众账号拥有授权作⽤域(scope参数)的权限的前提下
(服务号获得⾼级接⼝后,默认拥有scope参数中的snsapi_base和
snsapi_userinfo),引导关注者打开如下页⾯:
https://open.weixin.qq.com/connect/oauth2/authorize?
若提⽰“该链接⽆法访问”,请检查参数是否填写错误,是否拥有
scope参数对应的授权作⽤域权限。 appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCO
尤其注意:由于授权操作安全等级较⾼,所以在发起授权请求时,微
信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权
页⾯将⽆法正常访问
参考链接(请在微信客户端中打开此链接体验) scope为
snsapi_base
https://open.weixin.qq.com/connect/oauth2/authorize?
appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%ter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5e&state=123#wechat_redirect Scope为snsapi_userinfo
https://open.weixin.qq.com/connect/oauth2/authorize?
appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgam
code&scope=snsapi_userinfo&state=STATE#wechat_redirect
尤其注意:跳转回调redirect_uri,应当使⽤https链接来确保授权
code的安全性。
参数说明
参数
appid是是否必须公众号的唯⼀标识redirect_uri是授权后重定向的回
请使⽤urlencode对
response_type是返回类型,请填写
应⽤授权作⽤域,
(不弹出授权页⾯
只能获取⽤户open
scope是snsapi_userinfo (
⾯,可通过openid
别、所在地。并且
能获取其信息注的情况下,只要
重定向后会带上st
state否
最多128字节者可以填写a-zA-Z
#wechat_redirect是⽆论直接打开还是
向时候,必须带此app微信授权登录怎么识别
下图为scope等于snsapi_userinfo时的授权页⾯:
对用户后续营销信息的触达。
使用第三方登录,相当于为了便捷性,放弃了自建账号体系中对用户手机号、邮箱的获取,后续不能通过手机短信、邮箱将营销信息推送给用户。
4 什么类型应用适用于第三方登录
不是所有应用都适合第三方登录。
一般来说,对于工具型、游戏型、内容型等应用,注重的是工具的使用、内容的提供,适合把第三
方登录放在优先的位置,甚至只提供第三方登录就行,免去用户注册。如下图:
对于电商类应用,注重自己账号体系的建立、注重用户后续的营销,第三方登录只是作为补充,将
第三方登录置于较弱的位置,为新没有账号的用户提供快速登录。如下图:
对于支付类、金融类应用,强调安全性、强调隐私性,一般不提供第三方登录。如果这些类型应用
提供第三方登录,让用户觉得不安全,感觉自己的信息会通过第三方授权泄露出去。如下图:看看你的应用属于什么类型,是不是合适第三方登录,第三方登录应该置于什么样的权重下。5 第三方登录对于昵称的处理
你的产品如果对于昵称限制不严格,比如昵称不唯一、可修改等。可以直接将用户第三方账号的昵称作为用户昵称,写到数据库里。至于第三方昵称有更新,你的产品可以不随着更新,头像也如此。
你的产品如果对于昵称限制比较严格,比如昵称唯一、昵称不能带某些敏感词、昵称不可修改等。可以直接显示用户第三方昵称,但是不需要写入到数据库中,用户仍然可以在你的产品中填写自己的昵称。
6 第三方登录后不要再引导填写各类信息
对于第三方登录后,不少产品进一步引导用户绑定手机号、绑定邮箱、绑定已有的账号、设置昵称等操作。这就违背了你使用第三方登录的初衷。使用第三方登录,本来就是想让注册、登录变得简单,你这样一搞,比注册一个完整账号还复杂。
这些操作如果是必须的,可以在后面的流程中再去引导。比如领取优惠券时需要填写手机号,那这时再引导填写手机号。
7 QQ、微信登录中存在的问题
在接入第三方登录过程中,常遇到到pc网站和移动应用使用同一个QQ号登录后,生成两个账号的尴尬。
如果你还没有新建移动应用,解决方法是:
1. 首先在
2. 然后在移动应用,在“关联QQ互联APPID”提示弹窗上,选择“是”并输入网站APP ID 和APP KEY
。这其实是一个绑定的过程。如下图:
如果你已经新建了移动应用,但是没有和网站应用绑定,解决办法是给腾讯客服[email protected]发邮件,让腾讯那边帮助进行人工绑定处理:
1. 告知网站应用APPID和移动应用APPID
2. 指定其中一个APPID作为主APPID,将另一个APPID绑定在主APPID下(哪个APPID作为
主APPID的依据是,哪个APPID对应的应用有用户登录数据。如果2个应用都登录数据,那需要看你舍弃哪个)
多个移动应用和网站应用绑定,也是这个思路,需要联系腾讯客服进行处理。
微信对于多个应用使用同一个微信号登录返回同一个账号的处理很简单。一个unionid机制来实现。微信对于unionid说明如下:
如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。
对于微博、支付宝等第三方登录,都应该有类似的机制。只是QQ登录的处理比较麻烦。
作者:网易产品经理,通过微信公众号cpbiji(产品笔记)分享产品的实践经验和思考。人人都是产品经理(woshipm.com)中国最大最活跃的产品经理学习、交流、分享平台
app微信授权登录怎么识别 使用微信授权登录的APP,如何通过AppStore审核?
https://m.dagaqi.com/hulianwangchuangye/16904.html