You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
<?php
|
|
namespace app\service;
|
|
|
|
use think\Exception;
|
|
|
|
use app\common\lib\Sign;
|
|
|
|
|
|
class ApiService {
|
|
private static $instance = null;
|
|
|
|
private $httpClient;
|
|
|
|
private function __construct() {
|
|
// 初始化 GuzzleHttp\Client 實例
|
|
$this->httpClient = new \GuzzleHttp\Client([
|
|
'base_uri' => env('utel.sso_base_url').'/api/v1/'
|
|
]);
|
|
}
|
|
|
|
public static function getInstance() {
|
|
if (self::$instance == null) {
|
|
self::$instance = new ApiService();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
public function callApi($url, $method = 'GET', $params = []) {
|
|
$params['appid'] = 'sc';
|
|
$params['timestamp'] = time();
|
|
|
|
$params['sign'] = Sign::genSign($params);
|
|
|
|
$options = ['query' => $params];
|
|
$response = $this->httpClient->request($method, $url, $options);
|
|
|
|
if($response->getStatusCode()!=200){
|
|
//throw 異常;
|
|
throw new Exception('get sso user info error!!!');
|
|
}
|
|
|
|
$sso_data = json_decode($response->getBody()->getContents(),true);
|
|
return $sso_data;
|
|
}
|
|
} |