Connexion à l'API du programme WeChat Mini


wx.login(OBJECT)


Appelez l'interface pour obtenir les identifiants de connexion (code), puis échangez-les contre les informations sur l'état de connexion de l'utilisateur, y compris l'identifiant unique (openid) de l'utilisateur et la clé de session ( session_key) pour cette connexion. Le cryptage et le déchiffrement des communications des données utilisateur reposent sur des clés de session.


Description du paramètre OBJECT :

QQ截图20170208150445.png

Description du paramètre de retour de succès :

QQ截图20170208150502.png

Exemple de code :

//app.js
App({
  onLaunch: function() {
    wx.login({
      success: function(res) {
        if (res.code) {
          //发起网络请求
          wx.request({
            url: 'https://test.com/onLogin',
            data: {
              code: res.code
            }
          })
        } else {
          console.log('获取用户登录态失败!' + res.errMsg)
        }
      }
    });
  }
})


code en échange de session_key

Ceci est un HTTPS interface, le serveur de développeur utilise le code d'identification de connexion pour obtenir la session_key et l'openid. Parmi eux, session_key est la clé de la signature cryptée des données utilisateur. Pour la sécurité de votre propre application, session_key ne doit pas être transmise sur le réseau.

Adresse d'interface :

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

Paramètres de requête :

QQ截图20170208150550.png

Paramètres de retour :

Paramètre Description
openidIdentifiant unique de l'utilisateur
session_keyclé de session

Instructions de retour :

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


Maintenance du statut de connexion

Après avoir obtenu le statut de connexion de l'utilisateur via wx.login(), le statut de connexion doit être maintenu. Les développeurs doivent noter qu'ils ne doivent pas utiliser directement des champs tels que session_key et openid comme identifiants d'utilisateur ou identifiants de session, mais doivent plutôt distribuer eux-mêmes un état de connexion de session (veuillez vous référer au diagramme de séquence de connexion). Pour les sessions générées par les développeurs eux-mêmes, leur sécurité doit être assurée et de longs délais d'expiration ne doivent pas être définis. Une fois la session envoyée au client du mini-programme, elle peut être stockée en mémoire pour une communication ultérieure. wx.login() 获取到用户登录态之后,需要维护登录态。开发者要注意不应该直接把 session_key、openid 等字段作为用户的标识或者 session 的标识,而应该自己派发一个 session 登录态(请参考登录时序图)。对于开发者自己生成的 session,应该保证其安全性且不应该设置较长的过期时间。session 派发到小程序客户端之后,可将其存储在 storage ,用于后续通信使用。


登录时序图

1483582545198711.png

wx.checkSession(OBJECT)


检查登陆态是否过期

QQ截图20170208150633.png

示例代码:

wx.checkSession({
  success: function(){    //登录态未过期
  },
  fail: function(){    //登录态过期
    wx.login()
  }
})


Bug & Tip

  1. bug: iOS/Android 6.3.30

  2. Diagramme de séquence de connexion

1483582545198711.png🎜

wx.checkSession(OBJECT)🎜
🎜 Vérifiez si le statut de connexion a expiré🎜🎜🎜QQ capture d'écran 20170208150633 .png🎜🎜🎜🎜Exemple de code : 🎜🎜rrreee

🎜

Bug et astuce

< ol>
  • bug : iOS/Android 6.3.30, une exception se produira lors de l'appel de wx.login dans App.onLaunch 🎜🎜