微信网页授权,错误40163,ios正确,安卓错误?
2017-07-29:结贴
昨天研究了半天,也没解决,看到出错的http头里面有PHPSESSID,回头去修改了一下程序里的session部分的代码(这部分代码在微信网页授权之后),,也不知道是腾讯那边修正了bug还是我修改了正确的session代码,反正这个问题没了,已经正常运行了一天了~
2017-07-28:第三次更新
加了https之后,就我自己调试的那个账号的安卓设备可以了,其他账号还是会出现问题,而且这次不出错误40163了,压根白页面,过会儿出现网页找不到,复制链接一看还在index.php里,压根不转入oauth.php了,看来问题的确是在公众号后台那边。
不用https,用日志记录,确实oauth.php被调用了两次,http头记录如下:
error
2017-07-27 14:48:29 【021HVeVO1RRzU31O5ZXO1LdhVO1HVeVe】
2017-07-27 14:48:29 【{"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/wxpic,image/sharpp,/;q=0.8","Accept-Encoding":"gzip","Accept-Language":"zh-CN,en-US;q=0.8","Connection":"close","Cookie":"PHPSESSID=2nogkq0l072jvnt8728jonned4","Host":"www.yoookosoft.cn","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Linux; Android 6.0.1; MI 4LTE Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043409 Safari/537.36 MicroMessenger/6.5.10.1080 NetType/WIFI Language/zh_CN","X-Forwarded-For":"114.231.66.45"}】
2017-07-27 14:48:39 【021HVeVO1RRzU31O5ZXO1LdhVO1HVeVe】
2017-07-27 14:48:39 【{"Host":"www.yoookosoft.cn","Connection":"keep-alive","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Linux; Android 6.0.1; MI 4LTE Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043409 Safari/537.36 MicroMessenger/6.5.10.1080 NetType/WIFI Language/zh_CN","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/wxpic,image/sharpp,/;q=0.8","Accept-Encoding":"gzip, deflate","Accept-Language":"zh-CN,en-US;q=0.8","Cookie":"PHPSESSID=2nogkq0l072jvnt8728jonned4"}】
ok
2017-07-27 14:50:05 【001zXCac2zuXTQ0f747c2CFAac2zXCam】
2017-07-27 14:50:05 【{"Host":"www.yoookosoft.cn","Upgrade-Insecure-Requests":"1","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8","User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89 MicroMessenger/6.5.10 NetType/WIFI Language/zh_CN","Accept-Language":"zh-cn","Accept-Encoding":"gzip, deflate","Connection":"keep-alive"}】
暂时还没解决办法,今天继续排查~
--------------------------------------------------------------------------------------------
点击一个公众号菜单,跳转到【微信网页授权】,ios平台没问题,安卓平台始终是错误40163,官方的说法是code被重复使用了,从index.php里获取了马上就跳转到oauth.php里去换取access_token,中间没有任何使用过!看到网上一条线索,用苹果手机没任何问题,安卓一直是错误40163,换了两台安卓设备,微信都更新到了最新版本,错误一直在~
代码如下:
index.php
<?php
header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$myappurl.'oauth.php&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect');
oauth.php
<?php
$code = $_GET['code'];
$state = $_GET['state']; if (empty($code)) $this->error('授权失败'); //获取oauth_token
$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code';
$token = json_decode(file_get_contents($token_url));
if (isset($token->errcode)) {
echo '<h1>错误:</h1>'.$token->errcode;
echo '<br/><h2>错误信息:</h2>'.$token->errmsg;
exit;
} //……
安卓手机错误画面:
苹果手机正确画面:
2017-07-26:第一次更新
我又在header之前加了不使用缓存,强制不使用缓存,还是有这个错误~
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache"); header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=我的AppID&redirect_uri=我的URL/ oauth.php&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect');
然后找了【微信web开发者工具】,在pc上模拟访问微信网页授权,这次发现点线索,照理说用snsapi_userinfo方式访问微信网页授权(如果是snsapi_base是不会出现下面的窗口的),会跳一个授权窗口,在调试工具里是跳的,但是在手机里不出现以下画面,不知道为什么,怀疑跟这里有关……
我怀疑是不是跟这里有关,在安卓手机上现在不显示上述提示窗口了,然后进度条走了很长时间之后,就开始出错误40163,在【微信web开发者工具】上是会出现提示窗口的!感觉应该是微信安卓版的问题,但是微信又没有什么可以提问的平台,微信客服形同虚设,真郁闷。
各种方法解决不了之下,又继续读公众号的官方文档https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842,读到这一部分
“授权后重定向的回调链接地址,请使用urlEncode对链接进行处理”
官方的例子就是用urlEncode的,马上改成urlEncode,但是错误依旧;
“尤其注意:跳转回调redirect_uri,应当使用https链接来确保授权code的安全性。”
再看官方的跳转地址,第一个snsapi_base是有https的,第二个snsapi_userinfo没有用https,我的服务器上是有部署https的,马上在http后面加了个s,我靠,问题解决了!!!
安卓也再没有错误40163了,苹果为什么没事呢?苹果的app是强制使用https的,安卓没有强制!!!
为什么每次刚重启服务器的时候安卓好用的呢?现在的网络环境太差了,谁知道在传输过程中被加了些什么?看来https真的是有必要大力推广!!!
以下是官方的例子:
scope为snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https%3A%2F%2Fchong.qq.com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdap
ter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_bas
e&state=123#wechat_redirect scope为snsapi_userinfo https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=
code&scope=snsapi_userinfo&state=STATE#wechat_redirect
微信网页授权,错误40163,ios正确,安卓错误?的更多相关文章
- 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP)
wechat github 手把手实现微信网页授权和微信支付,附源代码(VUE and thinkPHP) 概述 公众号开发是痛苦的,痛苦在好多问题开发者文档是没有提到的,是需要你猜的. 在开发过程中 ...
- php 微信登录 公众号 获取用户信息 微信网页授权
php 微信登录 公众号 获取用户信息 微信网页授权 先自己建立两个文件: index.php 和 getUserInfo.php index.php <?php //scope=snsap ...
- VueJs单页应用实现微信网页授权及微信分享功能
在实际开发中,无论是做PC端.WebApp端还是微信公众号等类型的项目的时候,或多或少都会涉及到微信相关的开发,最近公司项目要求实现微信网页授权,并获取微信用户基本信息的功能及微信分享的功能,现在总算 ...
- C# 微信网页授权多域名解决
在做微信开发的时候,会遇到这样的场景:一个公众号,会有多个业务:官网.论坛.商城等等 微信网页授权域名 目前最多可以填写两个!!!,那么问题来了?这应该怎么办? 答案就是: 做一个中转服务! 域名1: ...
- 微信网页授权demo2
1.在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名.请注意,这里填写的是 ...
- 微信网页授权,获取微信code,获取access_tocken,获取用户信息
微信开发中,经常有这样的需求:获得用户头像.绑定微信号给用户发信息.. 那么实现这些的前提就是授权! 1.配置安全回调域名: 在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 ...
- Spring Security中实现微信网页授权
微信公众号提供了微信支付.微信优惠券.微信H5红包.微信红包封面等等促销工具来帮助我们的应用拉新保活.但是这些福利要想正确地发放到用户的手里就必须拿到用户特定的(微信应用)微信标识openid甚至是用 ...
- 微信网页授权snsapi_base、snsapi_userinfo的问题
微信网页授权SCOPE分为snsapi_base.snsapi_userinfo,前者是用户无感知的静默授权只能拿到openid:而后者需要用户确认,能拿到更多的用户信息. 我有一个系统需要进行网页授 ...
- 玩玩微信公众号Java版之六:微信网页授权
我们经常会访问一些网站,用微信登录的时候需要用到授权,那么微信网页授权是怎么一回事呢,一起来看看吧! 参考官方文档:https://mp.weixin.qq.com/wiki?t=resource ...
随机推荐
- restful知识点之一CBV
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^FBVTEST/', views.FBV_Test.as_view()), ] url ...
- 用两个栈实现队列(C++ 和 Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 a ...
- 使用cocostudio 需要在Android.mk文件的配置
直接贴上Android.mk文件吧. 对了,是cocos2d3.0的,不知道2.x是否一样. LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LO ...
- Web API 2 入门——Web API 2中的操作结果(谷歌翻译)
在这篇文章中 空虚 HttpResponseMessage IHttpActionResult 其他返回类型 作者:Mike Wasson 本主题描述ASP.NET Web API如何将控制器操作的返 ...
- mongodb 启动
>mongod.exe --dbpath C:\Environ\mongodb-3.0.6\data\db >mongod.exe --logpath "C:\Environ\ ...
- 错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息
错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息 查看错误得知是安装sqlexpr_x64.exe的时候出现了错误 解决: 通过打开skype镜像,找到sql ...
- 华为HCNP实验 防火墙安全区域及安全策略配置(USG6000)
防火墙安全区域及安全策略配置 一.学习目的 掌握防火墙安全区域的配置方法 掌握安全策略的配置方法 二.拓扑图 三.场景 你是公司的网络管理员.公司总部的网络分成了三个区域,包括 ...
- Python+Selenium2自动化测试之IE、chrome浏览器启动
构建Python+Selenium2自动化测试环境完成之后,就需要测试支持python的selenium的版本是否都支持在不同浏览器上运行,当前我们分别在三个最通用的浏览器上通过脚本来测试. 1.在I ...
- MEGER sentence in oracle
MEGE Sentence This oracle tutorial explains how to use the oralce MEGER sentence with syntax and sam ...
- python 面向对象:类,作用域
类(Class)和实例(Instance) 定义类是通过class关键字:class Student(object): pass class后面紧接着是类名,即Student接着是(object),表 ...