Laravel5.4微信公众平台页面授权获取用户信息
1.路由
//授权页面 Route::get('demo', 'DemoController@demo'); //调用页面授权 Route::get('demo/authorize', 'DemoController@wxAuthorize'); //code回调 Route::any('demo/authorize/code', 'DemoController@getCode');
2.类
<?PHP namespace App\Http\Controllers\Wxapi; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Redis; class DemoController extends Controller { private static $appid = 'wxb9c7fce26c7b9d46'; //你的appid private static $appsecret = '23997a0866d367f982194ce45c6f6408'; //你的secret /** * @return mixed * 请求也页面 */ public function demo() { return view('wx.demo'); } /** * @return mixed * 获取授权页面 */ public function wxAuthorize() { $isUser = $this->getToken(); if( $isUser != false ) { //获取用信息 return $this->getUserInfo( $isUser ); } $url = 'https://open.weixin.qq.com/connect/oauth2/authorize?'; $get['appid'] = static::$appid; $get['redirect_uri'] = url('api/demo/authorize/code'); $get['response_type'] = 'code'; $get['scope'] = 'snsapi_userinfo'; $get['state'] = 'STATE#wechat_redirect '; foreach ( $get as $k=>$v ) { $url.= "$k=".urlencode($v)."&"; } $url = substr($url, 0, -1); return redirect($url); } /** * @param Request $request * 根据code获取token * 根据token获取用户信息 */ public function getCode(Request $request) { $code = $request->input('code'); $url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".static::$appid."&secret=".static::$appsecret."&code=$code&grant_type=authorization_code"; $data = $this->curlGetDate( $url ); if( isset($data->errcode) == false ) { $token = json_encode($data); session(['token'=>$token]); //获取用户信息 return $this->getUserInfo( $data ); } } /** * @return bool * 刷新token */ public function getToken() { try{ $dataJson = session('token'); $data = json_decode($dataJson); $res_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid='.static::$appid.'&grant_type=refresh_token&refresh_token='.$data->refresh_token; $resData = $this->curlGetDate($res_url); $token = json_encode($resData); session(['token'=>$token]);//保存在session里 return $resData; }catch (\Exception $e) { return false; } } /** * @param $data * @return mixed * 用户信息 */ public function getUserInfo( $data ) { $access_token = $data->access_token; $openid = $data->openid; $user['access_token'] = $access_token; $user = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN'; $obj = $this->curlGetDate( $user ); dd($obj); } //curl get请求 public function curlGetDate( $url ) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch); return json_decode($output); } }
登录公众平台-->开发者中心-->接口权限表