public function callback($input)
    {
        if (isset($input['denied'])) {
            throw new AuthenticationCanceledException();
        }

        if (!isset($input['oauth_token']) || !isset($input['oauth_verifier'])) {
            throw new InvalidOAuthTokenException('missing oauth_token or oauth_verifier');
        }

        $verifier_token = $this->token->verifier($input['oauth_token'], $input['oauth_verifier']);
        $access_token = $this->oauth->getAccessToken($this->settings, $this->consumer, $verifier_token);

        return $this->getProfile($access_token);
    }