Skip to content
关注公众号,获取新课通知
【重要通知】uniapp实战社区交友交流群更换为:602180461,靓仔/靓女可以重新申请加入哦~

微信小程序登录


控制器层:application\api\v1\User.php

php
// 微信小程序登录
  	public function wxLogin(Request $request){
        $url = "https://api.weixin.qq.com/sns/jscode2session";
        // 参数
        $params['appid']= config('api.wx.appid');
        $params['secret']=  config('api.wx.secret');
        $params['js_code']= $request -> param('code');
        $params['grant_type']= 'authorization_code';
        // 微信API返回的session_key 和 openid
        $arr = httpWurl($url, $params, 'POST');
        $arr = json_decode($arr,true);
        // 判断是否成功
        if(isset($arr['errcode']) && !empty($arr['errcode'])){
            return self::showResCodeWithOutData($arr['errmsg']);
        }
        // 拿到数据
        $request->provider = 'weixin';
        $request->openid = $arr['openid'];
      	$request->expires_in = 1000000;
        //第三方登录
		$user =(new UserModel())->otherlogin();
        return self::showResCode('登录成功',$user);
    }

公共方法:application/common.php

php
function httpWurl($url, $params, $method = 'GET', $header = array(), $multi = false){
    date_default_timezone_set('PRC');
    $opts = array(
        CURLOPT_TIMEOUT        => 30,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_HTTPHEADER     => $header,
        CURLOPT_COOKIESESSION  => true,
        CURLOPT_FOLLOWLOCATION => 1,
        CURLOPT_COOKIE         =>session_name().'='.session_id(),
    );
    /* 根据请求类型设置特定参数 */
    switch(strtoupper($method)){
        case 'GET':
            $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
            break;
        case 'POST':
            //判断是否传输文件
            $params = $multi ? $params : http_build_query($params);
            $opts[CURLOPT_URL] = $url;
            $opts[CURLOPT_POST] = 1;
            $opts[CURLOPT_POSTFIELDS] = $params;
            break;
        default:
        TApiException('不支持的请求方式!');
    }
    /* 初始化并执行curl请求 */
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $data  = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if($error) TApiException('请求发生错误:' . $error);
    return  $data;
}

路由层:route\route.php

php
Route::group('api/:v1/',function(){
   // 微信小程序登录
    Route::post('wxlogin','api/v1.User/wxLogin');
})