微信小程序技术教程之用户授权登陆开发

2018/3/28 18:14:47
摘要: 微信用户授权登陆的时候,用来记录用户身份唯一性的标识就是微信中的unionID,所以在做授权登陆开发的时候,如何拿到


 微信用户授权登陆的时候,用来记录用户身份唯一性的标识就是微信中的unionID,所以在做授权登陆开发的时候,如何拿到unionID就成为开发的关键之一。本文介绍微信小程序JS代码登陆流程与服务器处理流程,来说说如何进行用户授权登陆开发 。

1、JS代码登陆流程及示例代码

(1)微信小程序JS代码的登陆流程为:login ->获取code ->getUserInfo获取iv和encryptedData ->传给自己的服务器处理 ->返回给小程序结果。

(2)JS登陆示例代码如下

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)

    }

  }

});

(3)所需参数介绍

code:服务器用来获取sessionKey的必要参数

encryptedData:加密过的字符串

IV:加密算法的初始向量

(4)服务器处理流程示例代码

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

            }

          })

  }

2、服务器解析说明及示例代码

  微信授权登陆所需的标识用户身份唯一性的unionID,就在encryptedData中,所以获取unionID则需要在encryptedData这些信息中将它解析出来,解析流程是:通过微信的https://api.weixin.qq.com/sns/jscode2session接口获取seesionKey,然后在通过sessionKey和iv来解密encryptedData数据获取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 );

在拿到解析后的encryptedData之后,就可以在里面找到unionID,而用户的微信授权登陆开发也就实现了。


声明:文章"微信小程序技术教程之用户授权登陆开发"为互诚科技—微信小程序开发公司的原创文章,转载请注明出处,谢谢合作!
标签:小程序干货
电话咨询:18011971195(黄先生)
在线留言:
微信扫码,关注我们
相关文章
  • 案例论证广州微信小程序开发后实现商业转化?

    微信小程序刚被开发出来的时候,是将其定位成为工具性的产品。而很多一开始开发的工具性小程序,是比较难去实现商业性转化的,很多开发者在初涉小程序的时候

  • 微信小程序新增四项能力,信息展示开发越强大

    微信官方在小程序功能的开放之路真的是越走越远,现在又就着信息展示模块来开放了四项新能力,来提升用户的体验以及小程序运营者的管理体验,小编只能说这次的事情搞得依旧深得人心。按照写作流程,在夸完新能力深得人心之后,小编就要来介绍一下这四项新能力了。

  • 微信小程序开发教程之http请求

    微信小程序的服务器中可以设置四种网络访问域名,每一种类型的网络请求需要设置一个对应的域名,并且要注意的是,在设置域名

  • 为什么我们都说微信小程序会火?

    微信小程序自上线以来的不温不火到现在的温温火火,可能还会在未来变得红红火火,都在验证着很多人对小程序会火的预言的正确性。为什么会有那么多人看好小程序的未来,又为什么那么多会觉得小程序终将会火?其实这些为什么,都是因为有了预兆。

  • 广州微信小程序关键词设置如何进行开发优化

    微信小程序的关键词设置跟搜索排名与曝光度有着很大的关系,但其实一蹴而就的关键词设置是比较难的一件事,很多企业商家在设置好关键词之后,达不到预想的效果,就需要对关键词进行优化与调整。那企业商家要如何对关键词进行优化呢?其实方法

  • 微信小程序开发技术教程:视图容器组件详解(二)

    接上次视图容器组建详解(一),我们今天继续来介绍两个组件样式。