/** * Redirect and auth twitter account */ public function redirect() { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'twitterauth') { // request token if (!isset($_SESSION)) { ob_start(); @session_start(); } require_once dirname(__FILE__) . '/twitteroauth/twitteroauth.php'; // create connection $connection = new TwitterOAuth($this->consumer_key, $this->consumer_secret); // request token $request_token = $connection->getRequestToken($this->oauth_callback); // if ($request_token) { // var_dump($request_token); // exit; $token = $request_token['oauth_token']; $_SESSION['oauth_token'] = $token; $_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; // redirect to twitter switch ($connection->http_code) { case 200: $url = $connection->getAuthorizeURL($request_token); //redirect to Twitter . header('Location: ' . $url); exit; break; default: echo "Connection with twitter Failed"; exit; break; } } else { echo __("Error Receiving Request Token", ET_DOMAIN); exit; } } else { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'twitterauth_callback' && $_GET['oauth_token']) { // request access token and // create account here if (!isset($_SESSION)) { ob_start(); @session_start(); } require_once dirname(__FILE__) . '/twitteroauth/twitteroauth.php'; // create connection $connection = new TwitterOAuth($this->consumer_key, $this->consumer_secret, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); // request access token $access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']); // if ($access_token && isset($access_token['oauth_token'])) { // recreate connection $connection = new TwitterOAuth($this->consumer_key, $this->consumer_secret, $access_token['oauth_token'], $access_token['oauth_token_secret']); $account = $connection->get('account/verify_credentials'); // create account if ($account && isset($account->screen_name) && isset($account->name)) { // find $users = get_users(array('meta_key' => 'et_twitter_id', 'meta_value' => $account->id)); if (!empty($users) && is_array($users)) { $user = $users[0]; wp_set_auth_cookie($user->ID, 1); wp_redirect(home_url()); exit; } $avatars = array(); $sizes = get_intermediate_image_sizes(); foreach ($sizes as $size) { $avatars[$size] = array($account->profile_image_url); } // save user info for saving later $_SESSION['user_login'] = $account->screen_name; $_SESSION['display_name'] = $account->name; $_SESSION['et_twitter_id'] = $account->id; $_SESSION['user_location'] = $account->location; $_SESSION['description'] = $account->description; $_SESSION['profile_image_url'] = $account->profile_image_url; $_SESSION['et_auth'] = serialize(array('user_login' => $account->screen_name, 'display_name' => $account->name, 'user_location' => $account->location, 'user_twitter' => 'https://twitter.com/' . $account->screen_name, 'description' => $account->description, 'et_avatar' => $avatars)); $_SESSION['et_social_id'] = $account->id; $_SESSION['et_auth_type'] = 'twitter'; wp_redirect($this->auth_url); exit; } } exit; } else { if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'twitterauth_login') { if (!isset($_SESSION)) { ob_start(); @session_start(); } if (!empty($_POST['user_email'])) { $password = wp_generate_password(); $new_account = array('user_login' => $_SESSION['user_login'], 'display_name' => $_SESSION['display_name'], 'et_twitter_id' => $_SESSION['et_twitter_id'], 'user_location' => $_SESSION['user_location'], 'user_twitter' => 'https://twitter.com/' . $_SESSION['user_login'], 'description' => $_SESSION['description'], 'user_email' => $_POST['user_email'], 'user_pass' => $password, 'et_avatar' => array('thumbnail' => array($_SESSION['profile_image_url']))); $user = get_user_by('login', $new_account['user_login']); if ($user != false) { $new_account['user_login'] = str_replace('@', '', $_POST['user_email']); } $result = QA_Member::insert($new_account); if (!is_wp_error($result)) { // send email here do_action('et_after_register', $result); // login $user = wp_signon(array('user_login' => $new_account['user_login'], 'user_password' => $new_account['user_pass'])); if (is_wp_error($user)) { global $et_error; $et_error = $user->get_error_message(); //echo $user->get_error_message(); } else { wp_redirect(home_url()); exit; } } else { global $et_error; $et_error = $result->get_error_message(); } } // ask people for password include TEMPLATEPATH . '/page-twitter-auth.php'; exit; } } } }