123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace App\Http\Logics\Admin;
- use App\Http\Models\HootsuiteUser;
- use GuzzleHttp\Client;
- use Illuminate\Support\Facades\Log;
- class HootsuiteLogic
- {
- public $clientId = 'c1ada351-6797-406e-8706-342af91ecad5';
- public $clientSecret = 'R-6nps.tHElD';
- public function accessToken(HootsuiteUser $user)
- {
- if (!$user) {
- throw new \Exception('获取token hootsuite用户信息不存在');
- }
- if ($user->access_token_expired > time()) {
- return $user->access_token;
- }
- $client = new Client();
- $authorization = base64_encode(sprintf('%s:%s', $this->clientId, $this->clientSecret));
- try {
- $response = $client->request('POST', 'https://platform.hootsuite.com/oauth2/token', [
- 'headers' => [
- 'Authorization' => 'Basic ' . $authorization
- ],
- 'form_params' => [
- 'grant_type' => 'refresh_token',
- 'scope' => 'offline',
- 'refresh_token' => $user->refresh_token,
- ]
- ]);
- $result = json_decode($response->getBody()->getContents(), true);
- $user->update([
- 'access_token' => $result['access_token'],
- 'refresh_token' => $result['refresh_token'],
- 'access_token_expired' => time() + intval($result['expires_in']) - 120
- ]);
- return $result['access_token'];
- } catch (\Throwable $throwable) {
- Log::error(var_export($throwable->getMessage(),1));
- throw new \Exception('获取token refreshToken获取失败');
- }
- }
- public function uploadMedia($remoteImg, $accessToken)
- {
- Log::info('remoteImg='.$remoteImg);
- $mime = image_type_to_mime_type(exif_imagetype($remoteImg));
- $fileStr=file_get_contents($remoteImg);
- $fileSize = strlen($fileStr);
- $client = new Client();
- $response = $client->request('POST', 'https://platform.hootsuite.com/v1/media', [
- 'headers' => [
- 'Authorization' => sprintf('Bearer %s', $accessToken)
- ],
- 'json' => [
- 'sizeBytes' => $fileSize,
- 'mimeType' => $mime
- ]
- ]);
- $result = json_decode($response->getBody()->getContents(), true);
- $uploadUrl = $result['data']['uploadUrl'];
- // $mediaId = $result['data']['id'];
- $uploadResponse = $client->request('PUT', $uploadUrl, [
- 'headers' => [
- 'Content-Length' => $fileSize,
- 'Content-Type' => $mime
- ],
- 'body' => $fileStr,
- ]);
- // Log::info('uploadMedia');
- // Log::info(var_export($result,1));
- // Log::info(var_export($uploadResponse->getBody()->getContents(),1));
- $code = $uploadResponse->getStatusCode();
- if ($code == 200) {
- return $result['data']['id'];
- } else {
- throw new \Exception($code);
- }
- }
- }
|