request = $request; return $this; } public function setOAuthProvider($provider) { $this->provider = $provider; return $this; } public function setException(Exception $e) { $this->exception = $e; return $this; } public function render() { $request = $this->request; $provider = $this->provider; $provider_name = $provider->getProviderName(); $diagnose = null; $view = new AphrontRequestFailureView(); $view->setHeader($provider_name.' Auth Failed'); if ($this->request) { $view->appendChild( hsprintf( '
Description: %s
', $request->getStr('error_description'))); $view->appendChild( hsprintf( 'Error: %s
', $request->getStr('error'))); $view->appendChild( hsprintf( 'Error Reason: %s
', $request->getStr('error_reason'))); } else if ($this->exception) { $view->appendChild( hsprintf( 'Error Details: %s
', $this->exception->getMessage())); } else { // TODO: We can probably refine this. $view->appendChild( hsprintf( 'Unable to authenticate with %s. '. 'There are several reasons this might happen:
'. 'You can try again, or login using another method.
', $provider_name, $provider_name, $provider_name, $provider_name)); $provider_key = $provider->getProviderKey(); $diagnose = hsprintf( ''. 'Diagnose %s OAuth Problems'. '', $provider_name); } $view->appendChild( '