From 484a9f4d92834cd4e161187668fddad5ee4a7f4e Mon Sep 17 00:00:00 2001 From: lebedevsergey Date: Tue, 21 Mar 2023 11:17:17 +0300 Subject: [PATCH] get Tiktok user from the official user details endpoint (#994) Co-authored-by: Sergey Lebedev --- Provider.php | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/Provider.php b/Provider.php index 379d7c2..412d682 100644 --- a/Provider.php +++ b/Provider.php @@ -55,10 +55,7 @@ public function user() $token = Arr::get($response, 'data.access_token'); $this->user = $this->mapUserToObject( - $this->getUserByToken([ - 'access_token' => $token, - 'open_id' => Arr::get($response, 'data.open_id'), - ]) + $this->getUserByToken($token) ); return $this->user->setToken($token) @@ -89,20 +86,17 @@ protected function getTokenFields($code) } /** - * Get TikTok user by token. - * - * @param array $data - * - * @return mixed + * @inheritdoc */ - protected function getUserByToken($data) + protected function getUserByToken($token) { - // Note: The TikTok api does not have an endpoint to get a user by the access - // token only. Open id is also required therefore: - // $data['access_token'] = $token, $data['open_id'] = $open_id - $response = $this->getHttpClient()->get( - 'https://open-api.tiktok.com/oauth/userinfo?'.http_build_query($data) + 'https://open.tiktokapis.com/v2/user/info/?fields=open_id,union_id,display_name,avatar_large_url', + [ + 'headers' => [ + 'Authorization' => 'Bearer '.$token, + ], + ] ); return json_decode((string) $response->getBody(), true); @@ -119,7 +113,7 @@ protected function mapUserToObject($user) 'id' => $user['open_id'], 'union_id' => $user['union_id'], 'name' => $user['display_name'], - 'avatar' => $user['avatar_larger'], + 'avatar' => $user['avatar_large_url'], ]); } }