appId = $appId; $this->appSecret = $appSecret; $this->appCallback = $appCallback; } public function httpGet($uri, $params = [], $headers = []) { $client = new HttpClient(); $options = ['query' => $params, 'headers' => $headers]; $response = $client->get($uri, $options); return $response->getBody(); } public function httpPost($uri, $params = [], $headers = []) { $client = new HttpClient(); $options = ['query' => $params, 'headers' => $headers]; $response = $client->post($uri, $options); return $response->getBody(); } abstract public function getAuthorizeUrl(); abstract public function getAccessToken($code); abstract public function getOpenId($accessToken); abstract public function getUserInfo($accessToken, $openId); }