/** * @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); }
/** * 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); } }
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); }
/** * @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]); }
/** * 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); }