zoukankan      html  css  js  c++  java
  • 微信网页授权,错误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 
  • 相关阅读:
    tensorflow 2.0 学习 (十) 拟合与过拟合问题
    tensorflow 2.0 学习 (九) tensorboard可视化功能认识
    tensorflow 2.0 学习 (八) keras模块的认识
    tensorflow 2.0 学习 (七) 反向传播代码逐步实现
    tensorflow 2.0 学习 (六) Himmelblua函数求极值
    tensorflow 2.0 学习 (五)MPG全连接网络训练与测试
    arp协议简单介绍
    Pthread spinlock自旋锁
    线程和进程状态
    内核态(内核空间)和用户态(用户空间)的区别和联系·
  • 原文地址:https://www.cnblogs.com/skysowe/p/7240938.html
Copyright © 2011-2022 走看看