cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Kod log masuk sah WeChat 40163

1. Masukkan halaman berikut dari laluan akaun awam
""https://---------/wxCode?appid=--------&redirect_uri=------- &response_type =kod&skop=snsapi_userinfo

2. Kod html wxCode ialah kod pada github Sumber kod sumber ialah 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 Apabila memasuki halaman parameter, redirect_uri=-------, dapatkan kod daripada url, simpan dalam kuki, dan rekodkannya.

4. Antara muka php dipanggil dalam halaman ini. Dapatkan kod dan hantarkannya. PHP mendapat kod dan memanggil antara muka WeChat untuk mendapatkan akses_token.

Memandangkan perkara di atas tidak dapat menyelesaikan masalah, pelarasan berikut telah dibuat:

1. Buat entri dari fail Php dan pergi terus ke halaman lompatan ialah fail html H5 di bawah nama domain semasa Selepas kebenaran diluluskan, parameter html halaman lompatan.
2. Minta antara muka php dalam html H5 ini dan hantar kod dalam url
3.php memperoleh akses_token melalui kod yang diluluskan, dan juga melaporkan errcode = 40163;

Kodnya adalah seperti berikut:

Laluan masuk
ht tps://api
/getWXCode?redirect_uri=htt ps://api


/getWXCode?redirect_uri=htt ps://api/here in fail php fungsi ) URL halaman yang dipaparkan dengan parameter kod dihantar dalam halaman ini melalui $.getJSON("https://api

*

/WxRcode=" ("kod") + "&amount=" + $.cookie("amount") + "&callback=?", fungsi(data) {🎜 🎜Kod dihantar ke antara muka php Apabila memanggil antara muka WeChat untuk mendapatkan access_token, ia sentiasa melaporkan errcode = 40163;errmsg = kod telah digunakan🎜.
崩溃!!!
🎜Jadi, cari punca dan penyelesaiannya. 🎜
三叔三叔2720 hari yang lalu2934

membalas semua(2)saya akan balas

  • 代言

    代言2017-06-15 09:24:23

    Kod hanya boleh digunakan sekali Kod yang diperolehi dalam js digunakan dua kali apabila ia dipindahkan ke halaman lain;

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-15 09:24:23

    GWC.urlParams['redirect_uri'] hendaklah mewakili alamat hujung belakang khusus

    balas
    0
  • Batalbalas