<small id='vF8G9'></small><noframes id='vF8G9'>

  • <legend id='vF8G9'><style id='vF8G9'><dir id='vF8G9'><q id='vF8G9'></q></dir></style></legend>

  • <tfoot id='vF8G9'></tfoot>
      <bdo id='vF8G9'></bdo><ul id='vF8G9'></ul>

    1. <i id='vF8G9'><tr id='vF8G9'><dt id='vF8G9'><q id='vF8G9'><span id='vF8G9'><b id='vF8G9'><form id='vF8G9'><ins id='vF8G9'></ins><ul id='vF8G9'></ul><sub id='vF8G9'></sub></form><legend id='vF8G9'></legend><bdo id='vF8G9'><pre id='vF8G9'><center id='vF8G9'></center></pre></bdo></b><th id='vF8G9'></th></span></q></dt></tr></i><div id='vF8G9'><tfoot id='vF8G9'></tfoot><dl id='vF8G9'><fieldset id='vF8G9'></fieldset></dl></div>

      1. 微信小程序结合ThinkPHP5授权登陆后获取手机号

        时间:2023-12-12

        <small id='tQAna'></small><noframes id='tQAna'>

          <legend id='tQAna'><style id='tQAna'><dir id='tQAna'><q id='tQAna'></q></dir></style></legend>
            <tbody id='tQAna'></tbody>

              <i id='tQAna'><tr id='tQAna'><dt id='tQAna'><q id='tQAna'><span id='tQAna'><b id='tQAna'><form id='tQAna'><ins id='tQAna'></ins><ul id='tQAna'></ul><sub id='tQAna'></sub></form><legend id='tQAna'></legend><bdo id='tQAna'><pre id='tQAna'><center id='tQAna'></center></pre></bdo></b><th id='tQAna'></th></span></q></dt></tr></i><div id='tQAna'><tfoot id='tQAna'></tfoot><dl id='tQAna'><fieldset id='tQAna'></fieldset></dl></div>
              <tfoot id='tQAna'></tfoot>

                <bdo id='tQAna'></bdo><ul id='tQAna'></ul>
                1. 下面给出详细的攻略,分为以下几个步骤:

                  1. 获取微信小程序用户的授权信息。
                  2. 发送授权凭证code到后端服务器,获取session_key和openid。
                  3. 利用session_key和encryptedData解密用户敏感数据(如手机号等)。

                  步骤一:获取微信小程序用户的授权信息

                  在小程序端,可以通过wx.login函数获取用户授权凭证code,示例代码如下:

                  wx.login({
                    success: function(res) {
                      if (res.code) {
                        /* 在这里向后台服务器发送授权凭证code */
                      } else {
                        console.log('获取用户登录态失败!' + res.errMsg)
                      }
                    }
                  })
                  

                  除此之外,如果需要获取用户手机号等敏感数据,还需要调用wx.getPhoneNumber函数获取用户授权,示例代码如下:

                  wx.getPhoneNumber({
                    success: function(res) {
                      /* 在这里向后台服务器发送encryptedData和iv等信息 */
                    },
                    fail: function(res) {
                      console.log('获取用户手机号失败!' + res.errMsg)
                    }
                  })
                  

                  步骤二:发送授权凭证code到后端服务器,获取session_key和openid

                  在后端服务器上,可以使用ThinkPHP5框架自带的Http库发送请求获取session_key和openid,示例代码如下:

                  use think\facade\Http;
                  
                  function getSessionKeyAndOpenid($code) {
                      $url = "https://api.weixin.qq.com/sns/jscode2session?" .
                          "appid=APPID&secret=SECRET&js_code=CODE&grant_type=authorization_code";
                      $url = str_replace('APPID', '你的小程序appid', $url);
                      $url = str_replace('SECRET', '你的小程序appsecret', $url);
                      $url = str_replace('CODE', $code, $url);
                      $response = Http::get($url);
                      return json_decode($response, true);
                  }
                  

                  步骤三:利用session_key和encryptedData解密用户敏感数据

                  在后端服务器上,可以使用PHPopenssl_decrypt函数解密用户敏感数据,示例代码如下:

                  function getPhoneNumber($sessionKey, $encryptedData, $iv) {
                      $data = openssl_decrypt(base64_decode($encryptedData), 'AES-128-CBC', base64_decode($sessionKey), OPENSSL_RAW_DATA, base64_decode($iv));
                      $res = json_decode($data, true);
                      return $res['phoneNumber'];
                  }
                  

                  至此,就可以完成微信小程序的授权登陆并获取用户手机号的操作了。

                  示例代码:例如通过ThinkPHP5框架实现了一个小程序登陆接口,接收小程序端发送的授权凭证code和加密数据,从而返回用户的手机号,代码如下:

                  <?php
                  namespace app\api\controller;
                  
                  use think\Controller;
                  
                  class Wechat extends Controller
                  {
                      public function getUserPhoneNumber()
                      {
                          $code = input('code');
                          $encryptedData = input('encryptedData');
                          $iv = input('iv');
                  
                          $result = $this->getSessionKeyAndOpenid($code);
                          $sessionKey = $result['session_key'];
                  
                          $phoneNumber = $this->getPhoneNumber($sessionKey, $encryptedData, $iv);
                  
                          return json([
                              'phone_number' => $phoneNumber,
                          ]);
                      }
                  
                      private function getSessionKeyAndOpenid($code) {
                          $url = "https://api.weixin.qq.com/sns/jscode2session?" .
                              "appid=APPID&secret=SECRET&js_code=CODE&grant_type=authorization_code";
                          $url = str_replace('APPID', '你的小程序appid', $url);
                          $url = str_replace('SECRET', '你的小程序appsecret', $url);
                          $url = str_replace('CODE', $code, $url);
                          $response = Http::get($url);
                          return json_decode($response, true);
                      }
                  
                      private function getPhoneNumber($sessionKey, $encryptedData, $iv) {
                          $data = openssl_decrypt(base64_decode($encryptedData), 'AES-128-CBC', base64_decode($sessionKey), OPENSSL_RAW_DATA, base64_decode($iv));
                          $res = json_decode($data, true);
                          return $res['phoneNumber'];
                      }
                  }
                  

                  其中的getUserPhoneNumber方法就是接收小程序端发送的授权凭证code和加密数据,并返回用户手机号的方法。

                  上一篇:PHP中非常有用却鲜有人知的函数集锦 下一篇:微信小程序与php 实现微信支付的简单实例

                  相关文章

                  <small id='7Kzpf'></small><noframes id='7Kzpf'>

                      <i id='7Kzpf'><tr id='7Kzpf'><dt id='7Kzpf'><q id='7Kzpf'><span id='7Kzpf'><b id='7Kzpf'><form id='7Kzpf'><ins id='7Kzpf'></ins><ul id='7Kzpf'></ul><sub id='7Kzpf'></sub></form><legend id='7Kzpf'></legend><bdo id='7Kzpf'><pre id='7Kzpf'><center id='7Kzpf'></center></pre></bdo></b><th id='7Kzpf'></th></span></q></dt></tr></i><div id='7Kzpf'><tfoot id='7Kzpf'></tfoot><dl id='7Kzpf'><fieldset id='7Kzpf'></fieldset></dl></div>
                      • <bdo id='7Kzpf'></bdo><ul id='7Kzpf'></ul>
                    1. <legend id='7Kzpf'><style id='7Kzpf'><dir id='7Kzpf'><q id='7Kzpf'></q></dir></style></legend>

                      <tfoot id='7Kzpf'></tfoot>