微信網頁受權,錯誤40163,ios正確,安卓錯誤?

 

2017-07-29:結貼
昨天研究了半天,也沒解決,看到出錯的http頭裏面有PHPSESSID,回頭去修改了一下程序裏的session部分的代碼(這部分代碼在微信網頁受權以後),,也不知道是騰訊那邊修正了bug仍是我修改了正確的session代碼,反正這個問題沒了,已經正常運行了一天了~php

 

2017-07-28:第三次更新
加了https以後,就我本身調試的那個帳號的安卓設備能夠了,其餘帳號仍是會出現問題,並且此次不出錯誤40163了,壓根白頁面,過會兒出現網頁找不到,複製連接一看還在index.php裏,壓根不轉入oauth.php了,看來問題的確是在公衆號後臺那邊。html

不用https,用日誌記錄,確實oauth.php被調用了兩次,http頭記錄以下:ios

errorweb

2017-07-27 14:48:29 【021HVeVO1RRzU31O5ZXO1LdhVO1HVeVe】json

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"}】api

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 
相關文章
相關標籤/搜索