tp6 加 微信小程序获取opendid (附带源代码)

微信开发者工具近期调整了 微信授权登录    那么新版的授权登录该怎么写?   

 

微信小程序页面

<button bind:tap="getUserProfile">授权</button>
微信小程序js代码

Page({
 
    /**
     * 页面的初始数据
     */
    data: {
        userInfo: {},
        hasUserInfo: false,
        avatarUrl: '',
        nickname: '',
    },
    getUserProfile(e) {
        wx.getUserProfile({
            desc: '用于完善用户信息',
            success: (res) => {
                // console.log(res.userInfo)
                // 获取code码
                this.setData({
                    userInfo: res.userInfo,
                    nick_name: res.userInfo.nickName,
                    avatarUrl: res.userInfo.avatarUrl,
                    hasUserInfo: true
                })
                wx.login({
                    success: (res) => {
                        let code = res.code;
                        var userInfo = this.data.userInfo
                        var nickname = this.data.nick_name
                        var url = this.data.avatarUrl
                        // console.log(nickname);
                        if (code) {
                            wx.request({
                                url: 'http://www.gj.com/Api', //开发者服务器接口地址",
                                data: {
                                    code: code,
                                    nickname: nickname,
                                    url: url
                                }, //请求的参数",
                                method: 'POST',
                                dataType: 'json', //如果设为json,会尝试对返回
                                success: res => {
                                    console.log(res.data.data);
                                    if (res.data.code == 200) {
                                        wx.setStorageSync('token', res.data.data, 7200 - 60);
                                        wx.switchTab({
                                            url: '/pages/one/one'
                                        })//登录成功跳转底部选项卡我的页面
 
                                    }
                                },
                            });
                        }
                    }
                })
 
            },
        })
    },
 
})
后台接口代码

public function save()
    {
        // 接值
        $data = input();
        //调用封装的小程序请求
        $result = getWx($data);
        // 拼接需要添加搭配用户表的数据
        $addUser['session_key'] = $result['session_key'];
        $addUser['openid'] = $result['openid'];
        $addUser['name_nick']=$data['nickname'];
        $addUser['url'] = $data['url'];
        
 
        // 根据opecID 查看用户表是否有这个用户
        $userRes = UserModel::getOneUserData($addUser['openid']);
        //没有用户  添加用户信息到数据库
       if (!isset($userRes['u_id'])) {
           $addUserRes = UserModel::addUser($addUser);
        
       }
        //  生成token  返回小程序
       $token = md5($addUser['openid']);
        //  将token 存入session
        session($token,$addUser);
        return json(['code'=>200,'msg'=>'登录成功','data'=>$token]);
 
    
    }
封装的小程序请求

<?php
// 应用公共文件
 function getWx($data)
{
        $APPID = "你的小程序APPID ";
        $SECRET = "你的SECRET ";
        // 拼接url
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$APPID}&secret={$SECRET}&js_code={$data['code']}&grant_type=authorization_code";
 
        $curl = curl_init(); // 启动一个CURL会话
 
        curl_setopt($curl, CURLOPT_URL, $url);
 
        curl_setopt($curl, CURLOPT_HEADER, 0);
 
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
 
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  // 从证书中检查SSL加密算法是否存在
        $tmpInfo = curl_exec($curl);     //返回api的json对象
        //关闭URL请求
        curl_close($curl);
        $result = json_decode($tmpInfo, true);
        
        return $result;
}
 

上一篇:ssm:spring面向切面编程-----AOP编程初试身手


下一篇:javascript – 使用window.onscroll事件来检测页面/框架滚动