最近在做微信企业号的开发
但是感觉访问企业号的 oauth 验证很慢
官方的开发文档推荐采用 cookie 先看看是否过了验证,若有直接用就可以了
但是实际过程中来说,微信很容易丢 cookie
所以如果感觉间隔长点几乎每次都要等...
问:如何能做到秒开
( PS :直接点自定义菜单就跳到移动端了的,怎么搞定身份验证的问题)
个人想的一个方案是利用自定义菜单点击后回复一个连接带个用户临时 token ,靠临时 token 进去绕过 oauth....但是这样多个点击拉去连接的步骤,大家有啥好的办法吗
1
fractal314 2015-11-16 21:54:24 +08:00
设置 cookies 有效期管用吗?
|
2
bufannao 2015-11-16 21:56:45 +08:00 via Android
最后说的方法,没通过微信认证的公众号常用
如果已经认证过了还是用微信 API 吧,没啥好办法。 |
3
BeatenMo OP |
4
oott123 2015-11-16 23:32:22 +08:00 via Android
…检查下服务器 dns
检查下连接微信服务器的代码 在服务器上 ping 微信 api 服务器 试着解决速度慢而不是绕过它… |
5
denghongcai 2015-11-17 00:02:40 +08:00
30 秒明显是你自己的问题了,先找到你这一侧慢的原因
|
6
qq286735628 2015-11-17 00:10:18 +08:00
你的微信丢 cookie 是什么场景?我最近测试过,会话型 cookie 有效期几乎是跟随 APP 进程,除非进程被 kill 或者微信账号被登出。
至于存储型 cookie ,应该更久了,但没去做实际测试。 我之前还遇到一个 cookie 相关问题是 path 路径,即使默认服务端在 setcookie 的时候不配置 path ,但是你当前 REQ 的如果存在 path ,该 cookie 会被注入在 path 中,导致浏览器\WebView 端无法从根目录读取该 cookie |
7
cloverstd 2015-11-17 07:55:55 +08:00 via iPhone
我这里是 1 、 2 秒左右
微信 cookies 各种坑啊, Android 和 iOS 有效期不一样 |
8
BeatenMo OP @oott123
@denghongcai @cloverstd 不知道你们做的是不是企业号.... 我这里直接构造 https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 连接获取 code 就是这里开销大...快的 7 、 8 秒、慢的 20 多秒近 30 秒才回调到 REDIRECT_URI 上 直接 ping api ,延时 20ms ,结合企业号文档上说获取 code 有开销。。。我就认为这是接口问题了。。。。 |
9
cloverstd 2015-11-17 09:57:48 +08:00
@BeatenMo 囧,我就是做企业号的
code 不是微信重定向返回给你的吗 你慢无非就是在 1 用户在微信那边的网络重定向到腾讯服务器时这个过程耗时 2 你利用 code 发送 HTTP 请求时耗时 3 用户访问你的服务器时耗时 |
10
BeatenMo OP @cloverstd
nginx log: 124.226.54.159 - - [12/Nov/2015:11:43:07 +0800] "GET /web/index.php?r=zeus/index HTTP/1.1" 302 5 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 MicroMessenger/6.2.4 NetType/WIFI Language/zh_CN" - 124.226.54.159 - - [12/Nov/2015:11:43:28 +0800] "GET /web/index.php?r=zeus/getinfo&code=c95c8bda082c28d682b44b2c8b66f561 HTTP/1.1" 302 5 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 MicroMessenger/6.2.4 NetType/WIFI Language/zh_CN" - 124.226.54.159 - - [12/Nov/2015:11:43:30 +0800] "GET /web/index.php?r=zeus/main HTTP/1.1" 200 1024 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 MicroMessenger/6.2.4 NetType/WIFI Language/zh_CN" - 从 log 来看, 2 、 3 可以排除 zeus/index 内进行 redirect ,所以直接就 302 了,跟 api 拿 code 回调到 getinfo ,取身份,也就 2 秒,这个还算正常 关键就是拿 code 很久,而且还是所有人都这样.... 这我就无语了.... |
11
oott123 2015-11-17 10:33:34 +08:00 via Android
二三十秒不叫“有开销”,叫“不能用”…我是觉得腾讯没理由把需要二三十秒才返回的东西上线的。
去 profile 一下你的程序,看看诊断信息,搞清楚是哪里耗时吧。 |
12
BeatenMo OP |
13
cloverstd 2015-11-17 10:41:33 +08:00
你的第一条是如何看出直接 redirect 的?
我严重怀疑是你在 /web/index.php?r=zeus/index 里的某个操作耗时了,最终还是 redirect |
14
cloverstd 2015-11-17 10:42:43 +08:00
@BeatenMo 我有时开了 ss 忘了关,访问确实很慢,但是实际情况下, OAuth 授权应该在 2 秒之内,无论移动网络还是 WiFi
|
15
BeatenMo OP @cloverstd 这里没有其他操作, zeus/index 代码如下:
$urlTpl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=EPMS#wechat_redirect"; $url = sprintf($urlTpl,"CorpID",urlencode("http://wx.wuwork.com/web/index.phpr=zeus/getinfo")); $this->redirect($url); 就算我甩开这里,直接用构造好的 url 从微信上访问,也是很慢..... |
16
cloverstd 2015-11-17 10:50:11 +08:00
|