use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Cache; use Ixudra\Curl\Facades\Curl; class WechatController extends Controller { public $appId; public $appSecret; public function __construct() { $this->appId = config('xxx'); $this->appSecret = config('xxx'); } public function index() { $code = request()->get('code'); if ($code) { //获取用户的openId $openId = $this->getOpenId($code); //获取用户基本信息 $user_info = $this->getUserInfo($openId); //绑定获取的微信信息到当前用户 //更新openid到用户表,重新缓存用户信息 } //完成授权跳转到之前的请求地址 //授权是一般是在中间件中完成 return redirect(request('url')); } /** * 获取用户的openId * * @param $code * @return mixed */ private function getOpenId($code) { //从redis中获取有效的access_token $access_token = Cache::get('access_token'); if ($access_token) return $access_token; $curl = Curl::to('https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appId.'&secret='.$this->appSecret.'&code='.$code.'&grant_type=authorization_code') ->get(); $curl = json_decode($curl, true); //重新设置缓存,有效期120分钟 Cache::put('access_token', $curl['access_token'], 120); return $curl['openid']; } /** * 获取用户详情 * * @param $openId * @return mixed */ private function getUserInfo($openId) { //从redis中获取有效的access_token $access_token = Cache::get('access_token'); $curl = Curl::to('https://api.weixin.qq.com/sns/userinfo?access_token='.$access_token.'&openid='.$openId.'&lang=zh_CN') ->get(); return $curl = json_decode($curl, true); } }
laravel微信公众号授权(原生)
猜你喜欢
转载自blog.csdn.net/hu_feng903/article/details/79556092
今日推荐
周排行