buildAuthUrlFromBase('https://www.dropbox.com/oauth2/authorize', $state); } /** * {@inheritdoc} */ protected function getTokenUrl(): string { return 'https://api.dropboxapi.com/oauth2/token'; } /** * {@inheritdoc} */ protected function getTokenFields($code): array { return array_merge(parent::getTokenFields($code), [ 'grant_type' => 'authorization_code', ]); } /** * {@inheritdoc} * * @throws GuzzleException */ protected function getUserByToken($token) { $response = $this->getHttpClient()->post('https://api.dropboxapi.com/2/users/get_current_account', [ 'headers' => [ 'Authorization' => 'Bearer '.$token, ], ]); return json_decode($response->getBody(), true); } /** * {@inheritdoc} */ protected function mapUserToObject(array $user): User { return (new User)->setRaw($user)->map([ 'id' => $user['account_id'], 'nickname' => null, 'name' => $user['name']['display_name'], 'email' => $user['email'], 'avatar' => Arr::get($user, 'profile_photo_url'), ]); } }