<?php /** * Authentication adapter for WordPress.com OAuth2. */ final class PhutilWordPressAuthAdapter extends PhutilOAuthAuthAdapter { public function getAdapterType() { return 'wordpress'; } public function getAdapterDomain() { return 'wordpress.com'; } public function getAccountID() { return $this->getOAuthAccountData('ID'); } public function getAccountEmail() { return $this->getOAuthAccountData('email'); } public function getAccountName() { return $this->getOAuthAccountData('username'); } public function getAccountImageURI() { return $this->getOAuthAccountData('avatar_URL'); } public function getAccountURI() { return $this->getOAuthAccountData('profile_URL'); } public function getAccountRealName() { return $this->getOAuthAccountData('display_name'); } protected function getAuthenticateBaseURI() { return 'https://public-api.wordpress.com/oauth2/authorize'; } protected function getTokenBaseURI() { return 'https://public-api.wordpress.com/oauth2/token'; } public function getScope() { return 'user_read'; } public function getExtraAuthenticateParameters() { return array( 'response_type' => 'code', 'blog_id' => 0, ); } public function getExtraTokenParameters() { return array( 'grant_type' => 'authorization_code', ); } protected function loadOAuthAccountData() { return id(new PhutilWordPressFuture()) ->setClientID($this->getClientID()) ->setAccessToken($this->getAccessToken()) ->setRawWordPressQuery('/me/') ->resolve(); } }