javascript - Code de connexion autorisé WeChat 40163
三叔
三叔 2017-06-15 09:22:23
0
2
2950

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 ;

Le code est le suivant :

Chemin d'entrée
ht tps://api
/getWXCode?redirect_uri=htt ps://api/Minicustomer/receive (voici dans le fichier php en fonction de )

L'URL de la page rendue avec le paramètre code est transmise dans cette page via

$.getJSON("https://api
*/WxRedPack?code=" + $. isUrlPar ("code") + "&montant=" + $.cookie("montant") + "&callback=?", fonction(données) {

Le code est transmis à l'interface php. Lors de l'appel de l'interface WeChat pour obtenir le access_token, elle indique toujours errcode = 40163;errmsg = code been used

崩溃!!!

Alors, cherchez les causes et les solutions.

三叔
三叔

répondre à tous(2)
代言

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal