| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | <?phpnamespace 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);        }    }}
 |