buildAuthUrlFromBase($this->baseUrl.'/oauth/'.$this->version.'/authorize', $state); } /** * {@inheritdoc}. */ protected function getCodeFields($state = null) { return array_merge([ 'response_type' => 'code', 'client_id' => $this->getConfig()->get('client_id'), 'redirect_uri' => $this->redirectUrl, 'scope' => $this->formatScopes($this->scopes, $this->scopeSeparator), 'display' => $this->display, ], $this->parameters); } /** * Get the token URL for the provider. * * @return string */ protected function getTokenUrl() { return $this->baseUrl.'/oauth/'.$this->version.'/token'; } /** * Get the Post fields for the token request. * * @param string $code * * @return array */ protected function getTokenFields($code) { return parent::getTokenFields($code) + ['grant_type' => 'authorization_code']; } /** * Get the raw user for the given access token. * * @param \Overtrue\Socialite\AccessTokenInterface $token * * @return array */ protected function getUserByToken(AccessTokenInterface $token) { $response = $this->getHttpClient()->get($this->baseUrl.'/rest/'.$this->version.'/passport/users/getInfo', [ 'query' => [ 'access_token' => $token->getToken(), ], 'headers' => [ 'Accept' => 'application/json', ], ]); return json_decode($response->getBody(), true); } /** * Map the raw user array to a Socialite User instance. * * @param array $user * * @return \Overtrue\Socialite\User */ protected function mapUserToObject(array $user) { $realname = $this->arrayItem($user, 'realname'); return new User([ 'id' => $this->arrayItem($user, 'userid'), 'nickname' => empty($realname) ? '' : $realname, 'name' => $this->arrayItem($user, 'username'), 'email' => '', 'avatar' => $this->arrayItem($user, 'portrait'), ]); } }