Пример #1
0
 /**
  * @param Request $request
  * @return \Psr\Http\Message\ResponseInterface|RedirectResponse
  */
 public function handle(Request $request)
 {
     $redirectUri = (string) $request->getAttribute('originalUri', $request->getUri())->withQuery('');
     $server = new Twitter(['identifier' => $this->settings->get('flarum-auth-twitter.api_key'), 'secret' => $this->settings->get('flarum-auth-twitter.api_secret'), 'callback_uri' => $redirectUri]);
     $session = $request->getAttribute('session');
     $queryParams = $request->getQueryParams();
     $oAuthToken = array_get($queryParams, 'oauth_token');
     $oAuthVerifier = array_get($queryParams, 'oauth_verifier');
     if (!$oAuthToken || !$oAuthVerifier) {
         $temporaryCredentials = $server->getTemporaryCredentials();
         $session->set('temporary_credentials', serialize($temporaryCredentials));
         $session->save();
         // Second part of OAuth 1.0 authentication is to redirect the
         // resource owner to the login screen on the server.
         $server->authorize($temporaryCredentials);
         exit;
     }
     // Retrieve the temporary credentials we saved before
     $temporaryCredentials = unserialize($session->get('temporary_credentials'));
     // We will now retrieve token credentials from the server
     $tokenCredentials = $server->getTokenCredentials($temporaryCredentials, $oAuthToken, $oAuthVerifier);
     $user = $server->getUserDetails($tokenCredentials);
     $identification = ['twitter_id' => $user->uid];
     $suggestions = ['username' => $user->nickname, 'avatarUrl' => str_replace('_normal', '', $user->imageUrl)];
     return $this->authResponse->make($request, $identification, $suggestions);
 }
Пример #2
0
 /**
  * Do twitter login
  *
  * @return mixed|void
  */
 public function twitterLogin()
 {
     $this->autoRender = false;
     $server = new Twitter(['identifier' => Configure::read('OAuth.providers.twitter.options.clientId'), 'secret' => Configure::read('OAuth.providers.twitter.options.clientSecret'), 'callbackUri' => Configure::read('OAuth.providers.twitter.options.redirectUri')]);
     $oauthToken = $this->request->query('oauth_token');
     $oauthVerifier = $this->request->query('oauth_verifier');
     if (!empty($oauthToken) && !empty($oauthVerifier)) {
         $temporaryCredentials = $this->request->session()->read('temporary_credentials');
         $tokenCredentials = $server->getTokenCredentials($temporaryCredentials, $oauthToken, $oauthVerifier);
         $user = (array) $server->getUserDetails($tokenCredentials);
         $user['token'] = ['accessToken' => $tokenCredentials->getIdentifier(), 'tokenSecret' => $tokenCredentials->getSecret()];
         $this->request->session()->write(Configure::read('Users.Key.Session.social'), $user);
         try {
             $user = $this->Auth->identify();
             $this->_afterIdentifyUser($user, true);
         } catch (UserNotActiveException $ex) {
             $exception = $ex;
         } catch (AccountNotActiveException $ex) {
             $exception = $ex;
         } catch (MissingEmailException $ex) {
             $exception = $ex;
         }
         if (!empty($exception)) {
             return $this->failedSocialLogin($exception, $this->request->session()->read(Configure::read('Users.Key.Session.social')), true);
         }
     } else {
         $temporaryCredentials = $server->getTemporaryCredentials();
         $this->request->session()->write('temporary_credentials', $temporaryCredentials);
         $url = $server->getAuthorizationUrl($temporaryCredentials);
         return $this->redirect($url);
     }
 }
Пример #3
0
 public function getAuthorizationUrl()
 {
     $temporaryCredentials = $this->provider->getTemporaryCredentials();
     // Store the credentials in the session.
     $this->session->set(self::TEMP_CRED, serialize($temporaryCredentials));
     // Second part of OAuth 1.0 authentication is to redirect the
     // resource owner to the login screen on the server.
     return $this->provider->getAuthorizationUrl($temporaryCredentials);
 }
Пример #4
0
 /**
  * @param Request $request
  * @param array $routeParams
  * @return \Psr\Http\Message\ResponseInterface|RedirectResponse
  */
 public function handle(Request $request, array $routeParams = [])
 {
     session_start();
     $server = new Twitter(array('identifier' => $this->settings->get('flarum-auth-twitter.api_key'), 'secret' => $this->settings->get('flarum-auth-twitter.api_secret'), 'callback_uri' => $this->url->toRoute('auth.twitter')));
     if (!isset($_GET['oauth_token']) || !isset($_GET['oauth_verifier'])) {
         $temporaryCredentials = $server->getTemporaryCredentials();
         $_SESSION['temporary_credentials'] = serialize($temporaryCredentials);
         session_write_close();
         // Second part of OAuth 1.0 authentication is to redirect the
         // resource owner to the login screen on the server.
         $server->authorize($temporaryCredentials);
         exit;
     }
     // Retrieve the temporary credentials we saved before
     $temporaryCredentials = unserialize($_SESSION['temporary_credentials']);
     // We will now retrieve token credentials from the server
     $tokenCredentials = $server->getTokenCredentials($temporaryCredentials, $_GET['oauth_token'], $_GET['oauth_verifier']);
     $user = $server->getUserDetails($tokenCredentials);
     return $this->authenticate(['twitter_id' => $user->uid], ['username' => $user->nickname]);
 }
Пример #5
0
 /**
  * Make a DELETE request to Twitter API.
  *
  * @param string $url    Api url.
  * @param array $headers Request headers.
  * @param array  $params Additional parameters.
  *
  * @return string|array Api response (if json) it will be returned as array.
  */
 public function delete($url, array $headers = [], array $params = [])
 {
     return $this->instance->createHttpClient()->delete($url, $headers, $params);
 }