1. Entrez la page suivante à partir du chemin du compte public
""https://---------/wxCode?appid=--------&redirect_uri=------- &response_type =code&scope=snsapi_userinfo
2. Le code html de wxCode est le code sur github. La source du code source est https://github.com/HADB/GetWe...
.代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>微信登录</title>
</head>
<body>
<script>
var GWC = {
version: '1.1.1',
urlParams: {},
appendParams: function(url, params) {
if (params) {
var baseWithSearch = url.split('#')[0];
var hash = url.split('#')[1];
for (var key in params) {
var attrValue = params[key];
if (attrValue !== undefined) {
var newParam = key + "=" + attrValue;
if (baseWithSearch.indexOf('?') > 0) {
var oldParamReg = new RegExp('^' + key + '=[-%.!~*\'\(\)\w]*', 'g');
if (oldParamReg.test(baseWithSearch)) {
baseWithSearch = baseWithSearch.replace(oldParamReg, newParam);
} else {
baseWithSearch += "&" + newParam;
}
} else {
baseWithSearch += "?" + newParam;
}
}
}
if (hash) {
url = baseWithSearch + '#' + hash;
} else {
url = baseWithSearch;
}
}
return url;
},
getUrlParams: function() {
var pairs = location.search.substring(1).split('&');
for (var i = 0; i < pairs.length; i++) {
var pos = pairs[i].indexOf('=');
if (pos === -1) {
continue;
}
GWC.urlParams[pairs[i].substring(0, pos)] = decodeURIComponent(pairs[i].substring(pos + 1));
}
},
doRedirect: function() {
var code = GWC.urlParams['code'];
var appId = GWC.urlParams['appid'];
var scope = GWC.urlParams['scope'] || 'snsapi_base';
var state = GWC.urlParams['state'];
var redirectUri;
if (!code) {
//第一步,没有拿到code,跳转至微信授权页面获取code
redirectUri = GWC.appendParams('https://open.weixin.qq.com/connect/oauth2/authorize#wechat_redirect', {
'appid': appId,
'redirect_uri': encodeURIComponent(location.href),
'response_type': 'code',
'scope': scope,
'state': state,
});
} else {
//第二步,从微信授权页面跳转回来,已经获取到了code,再次跳转到实际所需页面
redirectUri = GWC.appendParams(GWC.urlParams['redirect_uri'], {
'code': code,
'state': state
});
}
location.href = redirectUri;
}
};
</script>
</body>
</html>
3. En entrant dans la page de paramètres, redirect_uri=-------, récupérez le code de l'url, enregistrez-le dans le cookie et enregistrez-le.
4. Une interface php est appelée dans cette page. Récupérez le code et transmettez-le. PHP récupère le code et appelle l'interface WeChat pour obtenir le access_token. L'interface renvoie toujours des informations errcode = 40163; errmsg = code been used.
Étant donné que ce qui précède ne peut pas résoudre le problème, les ajustements suivants ont été effectués :
1. Faites la saisie à partir du fichier Php et accédez directement à l'autorisation. La page de saut est le fichier html H5 sous le nom de domaine actuel. Une fois l'autorisation passée, le paramètre html de la page de saut contient du code.
2. Demandez l'interface php dans ce html H5 et transmettez le code dans l'url.
3.php obtient le access_token via le code transmis, et signale également errcode = 40163 ;
Chemin d'entrée
ht tps://api
/getWXCode?redirect_uri=htt ps://api/Minicustomer/receive (voici dans le fichier php en fonction de )
$.getJSON("https://api
*/WxRedPack?code=" + $. isUrlPar ("code") + "&montant=" + $.cookie("montant") + "&callback=?", fonction(données) {
崩溃!!!
Alors, cherchez les causes et les solutions.
Le code ne peut être utilisé qu'une seule fois. Le code obtenu en js est utilisé deux fois lorsqu'il est transféré vers d'autres pages ; ma suggestion est de l'exploiter depuis php. Après avoir obtenu le code en php, obtenez directement le access_token
.GWC.urlParams['redirect_uri'] doit représenter l'adresse backend spécifique