token = $token; $this->refresh_callback = $refreshCallback; } /** * Set the callback to be called when the underlying token expires * * @param callable $refreshCallback * @return void */ public function setRefreshCallback(callable $refreshCallback): void { $this->refresh_callback = $refreshCallback; } /** * Authenticate the passed in request with the provided token * * Token authentication uses the token as a bearer token. * * @param \Psr\Http\Message\RequestInterface $request request to authenticate * @return \Psr\Http\Message\RequestInterface authenticated request */ public function authenticate(\Psr\Http\Message\RequestInterface $request): \Psr\Http\Message\RequestInterface { if ($this->token->isExpired() && isset($this->refresh_callback)) { $callback = $this->refresh_callback; $this->token = $callback($this); } return $request->withHeader('Authorization', 'Bearer '.$this->token->getAccessToken()); } }