>  기사  >  위챗 애플릿  >  WeChat 미니 프로그램 개발을 위한 로그인 프로세스 생성 지침

WeChat 미니 프로그램 개발을 위한 로그인 프로세스 생성 지침

PHPz
PHPz원래의
2017-04-02 15:49:022314검색

WeChat에 로그인한 사람은 누구나 사용자 신원의 고유성을 기록하기 위해 식별자가 필요하다는 것을 알고 있습니다. WeChat에서는 UnionId가 우리가 기록해야 하는 고유 ID이므로, UnionId를 얻는 방법이 핵심이 됩니다. 프로젝트는 미니 프로그램과 배경 PHP 코드의 두 부분으로 나뉩니다.

미니 프로그램 코드부터 시작하겠습니다

미니 프로그램의 js코드 로그인 프로세스

로그인 -> >getUserInfo는 iv 및 암호화된 데이터를 가져옵니다. -> 처리를 위해 이를 자체 서버에 전달합니다. -> 결과를 애플릿

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)
 }
 }
});
}
})

코드로 반환합니다. 서버에서 세션을 얻는 데 사용됩니다. 🎜>키필수 매개변수입니다.

IV: 암호화 알고리즘의 초기 벡터, 암호화된 데이터: 암호화된

문자열.

코드 iv 암호화된 데이터를 서버에 전달

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
  }
  })
 }

문서를 읽으면 필요한 UnionId가 암호화된 데이터에 있으므로 서버가 변환하려면 이 정보가 필요하다는 것을 알아야 합니다. UnionId를 구문 분석합니다.

서버 처리 로직

먼저 WeChat 복호화 데모를 다운로드하세요

여기서 선택한 PHP 코드는 데모를 제외한 3개의

class 파일에 넣어주세요. 우리 자신의 프로젝트를 만들고 나중에 호출하세요.

다음은 서버의 처리 흐름에 대한 설명입니다.


WeChat의

인터페이스를 통해 seesionKey를 얻은 다음 sessionKey와 iv를 사용하여 암호화된 데이터 데이터를 해독합니다. 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 );

드디어 얻은 데이터는 우리가 해독한 암호화된 데이터이며, 여기에는 UnionId가 포함됩니다.

위 내용은 WeChat 미니 프로그램 개발을 위한 로그인 프로세스 생성 지침의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.