小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

微信小程序開發(fā)(一) 微信登錄流程

 天天向上wish 2018-01-30


先從我們的小程序代碼開始

這是我們小程序的代碼結(jié)構(gòu),登錄的主要功能在login.js中

簡單的說一下我們小程序的js代碼登錄流程

login ->獲取code ->getUserInfo獲取iv和encryptedData ->傳給自己的服務(wù)器處理 ->返回給小程序結(jié)果

var API_URL = "自己的服務(wù)器地址";
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);//一定要把加密串轉(zhuǎn)成URI編碼
          var iv = res2.iv;
          //請求自己的服務(wù)器
         Login(code,encryptedData,iv);
        }
      })

    } else {
      console.log('獲取用戶登錄態(tài)失??!' + res.errMsg)
    }
  }
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

}
})

  • code:服務(wù)器用來獲取sessionKey的必要參數(shù)。
  • IV:加密算法的初始向量,encryptedData:加密過的字符串。

把code iv encryptedData 傳遞給我們的服務(wù)器

function  Login(code,encryptedData,iv){  console.log('code='+code+'&encryptedData='+encryptedData+'&iv='+iv);
 //創(chuàng)建一個dialog
          wx.showToast({
            title: '正在登錄...',
            icon: 'loading',
            duration: 10000
          });
          //請求服務(wù)器
          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'
            }, // 設(shè)置請求的 header
            success: function (res) {
              // success
              wx.hideToast();
              console.log('服務(wù)器返回'+res.data);

            },
            fail: function () {
              // fail
              // wx.hideToast();
            },
            complete: function () {
              // complete
            }
          })
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

看文檔的話,應(yīng)該知道,我們所需要的unionId就在encryptedData中,所以服務(wù)器需要這些信息來把unionId解析出來。

服務(wù)器處理邏輯

我php用的是laravel框架

先下載微信的解密demo

下載地址
這里寫圖片描述
這里我選擇的是PHP代碼,把除了demo外的三個class文件,放入我們自己的項(xiàng)目,以后后面調(diào)用。

這里講解一下服務(wù)器的處理流程:
通過微信的https://api.weixin.qq.com/sns/jscode2session接口獲取seesionKey,然后在通過sessionKey和iv來解密encryptedData數(shù)據(jù)獲取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;
//解密數(shù)據(jù)
$data = '';
$wxBizDataCrypt = new WXBizDataCrypt($appid, $session_key);
$errCode=$wxBizDataCrypt>decryptData($appid,$session_key,$encryptedData, $iv, $data );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

最后拿到的這個 data就是我們解密后的encryptedData里面會包含unionId。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多