Heim  >  Artikel  >  WeChat-Applet  >  Das WeChat-Applet realisiert die logische Anordnung der Anmeldefunktion

Das WeChat-Applet realisiert die logische Anordnung der Anmeldefunktion

小云云
小云云Original
2018-01-30 11:35:466146Durchsuche

Damit jeder das WeChat-Applet besser entwickeln kann, teilt Ihnen dieser Artikel hauptsächlich die logische Anordnung der WeChat-Applet-Anmeldung mit, in der Hoffnung, allen zu helfen.

Registrieren/Anmelden

Mini Terminal" style="margin: 0.8em 0px; padding: 0px; box-sizing: border-box; ; Zeilenhöhe: 1,3 em; Schriftgröße: 2,13 em; wird an einen eigenen Server übergeben.

Die zu übertragenden Informationen haben 7 Parameter:

Serverseitige Verarbeitungslogik
appid  小程序唯一标识
secret  小程序的 app secret
js_code  //wx.login登录时获取的 code,用于后续获取session_key

//下面两个参数用户服务器端签名校验用户信息的
signature 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息。
rawData  不包括敏感信息的原始数据字符串,用于计算签名。

//下面两个参数是用于解密获取openId和UnionId的
encryptedData  包括敏感数据在内的完整用户信息的加密数据
iv 加密算法的初始向量
当然,可以精简为以下三个参数. 
其余的签名校验的参数可省略,而appid和secret可以直接写在服务器.
js_code //  wx.login登录时获取的 code,用于后续获取session_key
encryptedData  包括敏感数据在内的完整用户信息的加密数据
iv 加密算法的初始向量

Zugehörige Informationen Nach der Übertragung an den Server

1. Gehen Sie zuerst zum WeChat-Server, um den Sitzungsschlüssel gemäß dem js_code abzurufen

2 (Dieser Schritt kann weggelassen werden) Verwenden Sie sha1 (rawData + Sitzungsschlüssel ), um die Zeichenfolge abzurufen und den Signaturwert zu beurteilen. Sind sie gleich? Wenn sie gleich sind, sind die Benutzerinformationen korrekt und Sie können mit dem nächsten Schritt fortfahren. Wenn sie unterschiedlich sind, wurden die Benutzerinformationen manipuliert oder sind abgelaufen .

3. Entschlüsseln Sie es dann selbst gemäß dem Entschlüsselungsalgorithmus (die Eingabeparameter sind appId, sessionKey, cryptodata, iv, Geben Sie ein jsonObj zurück), rufen Sie Informationen wie openId und unionId ab und führen Sie serverseitige Registrierungs-/Anmeldevorgänge durch .
4. Nachdem die Registrierungs-/Anmeldelogik abgeschlossen ist, geben Sie die Sitzungs-ID (oder ein anderes Token) und die Benutzerinformationen unseres Servers an den Client zurück.

Unter anderem lautet die Anforderung des Servers, den Sitzungsschlüssel zu erhalten:

(Kleinbuchstaben bedeuten „fest“, Großbuchstaben „zu ersetzen“)

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code


Zurück :

Zugehöriger Entschlüsselungsalgorithmus:
  //正常返回的JSON数据包
    {
          "openid": "OPENID",
          "session_key": "SESSIONKEY"
          "expires_in": 2592000
    }
    //错误时返回JSON数据包(示例为Code无效)
    {
        "errcode": 40029,
        "errmsg": "invalid code"
    }

https://mp weixin.qq.com/debug/wxadoc/dev/api/signature.html

Hinweis : Der Beispielcode enthält Node, C++, PHP, Python, aber nicht Java.

Erfordert einen Server. Zurückgegebene Informationen:

SessionId/Token-Anmeldestatus-ID

userInfo: jsonObject, das des Benutzers Informationen auf unserer Plattform, deren Inhalt derselbe ist wie der, der von der getPersonalInfo-Schnittstelle zurückgegeben wird.



Zuletzt kapseln Sie den Anmeldevorgang in eine Methode und rufen ihn bei Bedarf auf

Verwandte Empfehlungen:
//最终供外面调用的方法
function login(){
    console.log('logining..........');
    //调用登录接口
    wx.login({
        success: function (e) {
            console.log('wxlogin successd........');
            var code = e.code;
            wx.getUserInfo({
                success: function (res) {
                    console.log('wxgetUserInfo successd........');
                    var encryptedData = encodeURIComponent(res.encryptedData);
                    thirdLogin(code,encryptedData,res.iv);//调用服务器api
                }
            })
        }
    });
}
function  thirdLogin(code,encryptedData,iv){
    var url = "eeee/xxx/login/ttttt";
    var params = new Object();
    params.code = code;
    params.encryptedData = encryptedData;
    params.iv =iv;
    buildRequest(new Object(),url,params,{
        onPre: function(page){},
        onSuccess:function (data){
            console.log('my  login successd........');
            console.log(data);
            getApp().globalData.session_id = data.session_id;
            getApp().globalData.uid = data.uid;
            getApp().globalData.isLogin = true;
        },
        onError : function(msgCanShow,code,hiddenMsg){
        }
    }).send();
}

So erhalten Sie Benutzerinformationen über das WeChat-Applet

Eine Zusammenfassung der Probleme, die bei der Entwicklung von WeChat-Miniprogrammen aufgetreten sind

Eine WeChat-Miniprogrammversion der Zhihu-Beispielfreigabe

Das obige ist der detaillierte Inhalt vonDas WeChat-Applet realisiert die logische Anordnung der Anmeldefunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn