session = Services::session(); } abstract public function getClient(): mixed; abstract public function createAuthUrl(): string; abstract public function setToken(string $access_code): void; abstract public function getUserSNSEntity(): UserSNSEntity; final public function getToken(): string { return $this->session->get($this->_token_name); } final public function getSite(): string { return $this->_site; } final protected function getModel(): UserSNSModel { if ($this->_model === null) { $this->_model = model(UserSNSModel::class); } return $this->_model; } }