[Applet] Use uni-app para construir el proceso de inicio de sesión del entorno de applet Inicio de sesión autorizado de applet WeChat

La autorización del applet WeChat generalmente puede obtener el openid del usuario, el apodo, el avatar, la provincia y la ciudad del usuario, el género

 

① Primero, guíe al usuario a hacer clic en el botón de autorización

1
<button open-type= "getUserInfo"  bindgetuserinfo= "bindGetUserInfo" >点击授权</button>

 

②, y luego escriba la función bindGetUserInfo:

1
2
3
4 4
5 5
6 6
7 7
8
   bindGetUserInfo(res) {
     console.log(res);
     if  (res.detail.userInfo) {
       console.log( "点击了同意授权" );
     else  {
       console.log( "点击了拒绝授权" );
     }
}

 

③ Aparecerá un cuadro emergente en este momento,

  

 

④, haga clic en Permitir devolverá la información básica del usuario, excepto para openid:

 

⑤ Luego, necesitamos usar la función wx.login de WeChat para obtener el openid del usuario

1
2
3
4 4
5 5
6 6
7 7
8
9 9
10
11
12
bindGetUserInfo(res) {
   let info = res;
   if  (info.detail.userInfo) {
     console.log( "点击了同意授权" );
     wx.login({
       success:  function  (res) {
         console.log(res);
       }
     })
   else  {
     console.log( "点击了拒绝授权" );
   }  

En este momento, WeChat devolverá un código de credencial de inicio de sesión temporal, solo para obtener este código puede obtener más openid y session_key

 

Request, solicite el servidor back-end, deje que el servidor solicite WeChat y devuelva openid y session_key, y luego use el caché local de WeChat para guardar la información básica del usuario

La documentación oficial sugiere que la clave de sesión session_key es la clave utilizada para cifrar y firmar los datos del usuario. Para aplicar su propia seguridad de datos, el servidor desarrollador no debe emitir la clave de sesión al applet, ni debe proporcionar esta clave

Solicitar código de front-end:

1
2
3
4 4
5 5
6 6
7 7
8
9 9
10
11
12
13
14
15
dieciséis
17
18 años
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
bindGetUserInfo(res) {
     let info = res;
     console.log(info);
     if  (info.detail.userInfo) {
       console.log( "点击了同意授权" );
       wx.login({
         success:  function  (res) {
           if  (res.code) {
             wx.request({
               url:  'http://www.test.com/test' ,
               data: {
                 code: res.code,
                 nickName: info.detail.userInfo.nickName,
                 city: info.detail.userInfo.city,
                 province: info.detail.userInfo.province,
                 avatarUrl: info.detail.userInfo.avatarUrl
               },
               header: {
                 'content-type' 'application/json'  // 默认值
               },
               success:  function  (res) {
                   var  userinfo = {};
                   userinfo[ 'id' ]=res.data.id;
                   userinfo[ 'nickName' ] = info.detail.userInfo.nickName;
                   userinfo[ 'avatarUrl' ] = info.detail.userInfo.avatarUrl;
                   wx.setStorageSync( 'userinfo' , userinfo);                    
               }
             })
           else  {
             console.log( "授权失败" );
           }
         },
       })
 
     else  {
       console.log( "点击了拒绝授权" );
     }
   }           

 

请求后台代码 

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
public  static  $appid = '你的appid' ;
public  static  $secret = '你的密钥' ;
 
public  function  test()
{
     $params =Request::instance()->param();
     $url = "https://api.weixin.qq.com/sns/jscode2session?appid=" .self:: $appid . "&secret=" .self:: $secret . "&js_code=" . $params [ 'code' ]. "&grant_type=authorization_code" ;
     $data = $this ->doCurl( $url );
     $info [ 'openid' ]= $data ->openid;   //获取到用户的openid
     $info [ 'avatar' ]= $params [ 'avatarUrl' ];
     $info [ 'province' ]= $params [ 'province' ];
     $info [ 'city' ]= $params [ 'city' ];
     $info [ 'nickName' ]= $params [ 'nickName' ];
     return  json([ 'status' =>1]);
}
 
 
public  function  doCurl( $url )
{
     $curl  = curl_init();
     // 使用curl_setopt()设置要获取的URL地址
     curl_setopt( $curl , CURLOPT_URL,  $url );
     // 设置是否输出header
     curl_setopt( $curl , CURLOPT_HEADER, false);
     // 设置是否输出结果
     curl_setopt( $curl , CURLOPT_RETURNTRANSFER, 1);
     // 设置是否检查服务器端的证书
     curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, false);
     // 使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量
     $data  = curl_exec( $curl );
     // 使用 curl_close() 关闭CURL会话
     curl_close( $curl );
     return  json_decode( $data );
}

相关资料:

Supongo que te gusta

Origin www.cnblogs.com/websmile/p/12148305.html
Recomendado
Clasificación