Exemple #1
0
 public function index()
 {
     $code = Input::get("code");
     $state = Input::get("state");
     $goto = Cache::get('wechat:state:' . $state);
     $url = $this->getTokenURI($code);
     $res = Requests::get($url);
     $response = json_decode($res->body, true);
     Cache::put('wechat:auth:access_token', $response['access_token'], intval($response['expires_in']) / 60 - 1);
     Cache::put('wechat:auth:openid', $response['openid'], intval($response['expires_in']) / 60 - 1);
     if ($response['scope'] == 'snsapi_userinfo') {
         $userinfo = $this->getUserInfo($response['access_token'], $response['openid']);
         $userinfo['privilege'] = json_encode($userinfo['privilege']);
         if (Openid::openid_exists($response['openid'])) {
             Openid::_update($response['openid'], $userinfo);
         } else {
             $openid = new Openid();
             $openid->setRawAttributes($userinfo);
             $openid->save();
         }
     }
     return redirect()->away($goto . '?openid=' . $response['openid'])->withCookie(cookie('_openid', $response['openid']));
 }