Maison >Applet WeChat >Développement de mini-programmes >Instructions pour créer un processus de connexion pour le développement du mini-programme WeChat

Instructions pour créer un processus de connexion pour le développement du mini-programme WeChat

PHPz
PHPzoriginal
2017-04-02 15:49:022359parcourir

Tous ceux qui se sont connectés avec WeChat savent que nous avons besoin d'un identifiant pour enregistrer le caractère unique de l'identité de l'utilisateur. Dans WeChat, unionId est l'identifiant unique que nous devons enregistrer, donc comment obtenir l'unionId devient la clé. projet en Il est divisé en deux parties : un mini programme et un code PHP d'arrière-plan.

Commençons par le code de notre mini-programme

Parlons brièvement du processus de connexion au code jsde notre mini-programme

connexion -> >getUserInfo obtient iv et selectedData -> le transmet à votre propre serveur pour traitement -> renvoie le résultat à l'applet

var API_URL = "自己的服务器地址";
Page({
 onLoad: function () {
 console.log("iv");
 wx.login({//login流程
 success: function (res) {//登录成功
 if (res.code) {
 var code = res.code;
 wx.getUserInfo({//getUserInfo流程
 success: function (res2) {//获取userinfo成功
 console.log(res2);
 var encryptedData = encodeURIComponent(res2.encryptedData);//一定要把加密串转成URI编码
  var iv = res2.iv;
  //请求自己的服务器
  Login(code,encryptedData,iv);
 }
 })
 
 } else {
 console.log('获取用户登录态失败!' + res.errMsg)
 }
 }
});
}
})

code : utilisé par le serveur pour obtenir la session Paramètres requis pour Key.

IV : vecteur initial de l'algorithme de chiffrement, selectedData : chaîne chiffrée.

Passez le code iv chiffréDonnées à notre serveur

function Login(code,encryptedData,iv){ console.log('code='+code+'&encryptedData='+encryptedData+'&iv='+iv);
 //创建一个dialog
  wx.showToast({
  title: '正在登录...',
  icon: 'loading',
  duration: 10000
  });
  //请求服务器
  wx.request({
  url: API_URL,
  data: {
  code:code,
  encryptedData:encryptedData,
  iv:iv
  },
  method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
  header: {
  'content-type': 'application/json'
  }, // 设置请求的 header
  success: function (res) {
  // success
  wx.hideToast();
  console.log('服务器返回'+res.data);
 
  },
  fail: function () {
  // fail
  // wx.hideToast();
  },
  complete: function () {
  // complete
  }
  })
 }

Si vous regardez le document, vous devez savoir que l'unionId dont nous avons besoin est dans chiffréDonnées, donc le serveur a besoin de cette information pour analyser l'unionId.

Logique de traitement du serveur

Téléchargez d'abord la démo de décryptage WeChat

Le code PHP sélectionné ici est les trois fichiers class sauf la démo. notre propre projet et l'appellerons plus tard.

Voici une explication du flux de traitement du serveur :

Obtenez la seesionKey via l'interface de WeChat, puis utilisez la sessionKey et iv pour décrypter les données cryptées. pour obtenir l’UnionID.

/**
 * 登录
 *
 * @return Response
 */
 public function weixinlogin( $user_id=null )
 {
  global $App_Error_Conf,$Gift_Ids,$Server_Http_Path,$Is_Local,$Test_User,$Good_Vcode,$WeiXin_Xd_Conf;
  $validator_result = input_validator(array('code','iv','encryptedData'));
  if(!empty($validator_result)){
   return response($validator_result);
  }
  $js_code = $_REQUEST['code'];
  $encryptedData = $_REQUEST['encryptedData'];
  $iv = $_REQUEST['iv'];
  $appid = $WeiXin_Xd_Conf['appid'];
  $secret = $WeiXin_Xd_Conf['secret'];
  $grant_type = $WeiXin_Xd_Conf['grant_type'];
  //从微信获取session_key
  $user_info_url = $WeiXin_Xd_Conf['code2session_url'];
  $user_info_url = sprintf("%s?appid=%s&secret=%s&js_code=%s&grant_type=%",$user_info_url,$appid,$secret,$js_code,$grant_type);
  $weixin_user_data = json_decode(get_url($user_info_url));
  $session_key = $weixin_user_data->session_key;
//解密数据
$data = '';
$wxBizDataCrypt = new WXBizDataCrypt($appid, $session_key);
$errCode=$wxBizDataCrypt>decryptData($appid,$session_key,$encryptedData, $iv, $data );

Les données que nous avons finalement obtenues sont les données chiffrées que nous avons déchiffrées, qui contiendront l'unionId.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn