/**
 * Method for Twitter login
 */
function ie_api_twitter_login()
{
    // Test user is logged in
    if (!iewp_api_user_is_logged_in()) {
        die('Error: please sign in');
    }
    // Twitter app credentials
    $consumer_key = trim(get_option('iewp_api_twitterapp_consumer_key', ''));
    $consumer_secret = trim(get_option('iewp_api_twitterapp_consumer_secret', ''));
    $callback_url = site_url('wp-json/ie-api/twitter-callback');
    // Test app creds have been set
    if ($consumer_key == '' || $consumer_secret == '') {
        die('Error: invalid twitter app credentials');
    }
    // Get a request token
    $connection = new TwitterOAuth($consumer_key, $consumer_secret);
    $request_token = $connection->getRequestToken($callback_url);
    // Store the request token for use in callback
    $user_id = iewp_api_id_from_hash();
    update_user_meta($user_id, 'twitter_oauth_token', $request_token['oauth_token']);
    update_user_meta($user_id, 'twitter_oauth_token_secret', $request_token['oauth_token_secret']);
    // Redirect to Twitter app approval page
    $redirect_url = $connection->getAuthorizeURL($request_token);
    wp_redirect($redirect_url);
    exit;
}
/**
 * Callback method for Twitter Oauth
 */
function ie_api_twitter_callback($request_data)
{
    global $wpdb;
    // Capture request data
    $data = $request_data->get_params();
    // Test user is logged in
    if (!iewp_api_user_is_logged_in()) {
        die('Error: please sign in');
    }
    // Twitter app credentials
    $consumer_key = trim(get_option('iewp_api_twitterapp_consumer_key', ''));
    $consumer_secret = trim(get_option('iewp_api_twitterapp_consumer_secret', ''));
    // Test app creds have been set
    if ($consumer_key == '' || $consumer_secret == '') {
        die('Error: invalid twitter app credentials');
    }
    // Retrieve the user's id
    $user_id = iewp_api_id_from_hash();
    // Sanity check - user denied access
    if (isset($data['denied'])) {
        die('Error: you denied access');
    }
    // Sanity check - no get vars from Twitter
    if (!isset($data['oauth_token']) || !isset($data['oauth_verifier'])) {
        die('Error: there was a problem retrieving tokens');
    }
    // Retrieve user's oauth token
    $twitter_oauth_token = get_user_meta($user_id, 'twitter_oauth_token', true);
    $twitter_oauth_token_secret = get_user_meta($user_id, 'twitter_oauth_token_secret', true);
    // Verify the token and get credentials for future use
    $connection = new TwitterOAuth($consumer_key, $consumer_secret, $twitter_oauth_token, $twitter_oauth_token_secret);
    $token_credentials = $connection->getAccessToken($data['oauth_verifier']);
    // Get account details
    $twitter = new TwitterOAuth($consumer_key, $consumer_secret, $token_credentials['oauth_token'], $token_credentials['oauth_token_secret']);
    $account = $twitter->get('account/verify_credentials');
    // Cleanup any previous credentials
    $wpdb->delete('ie_twitter_accounts', array('user_id' => $user_id), array('%d'));
    // Insert user credentials
    $wpdb->insert('ie_twitter_accounts', array('user_id' => $user_id, 'twitter_id' => $account->id_str, 'screen_name' => $account->screen_name, 'oauth_token' => $token_credentials['oauth_token'], 'oauth_token_secret' => $token_credentials['oauth_token_secret'], 'account_str' => json_encode($account), 'date_created' => time()), array('%d', '%s', '%s', '%s', '%s', '%s', '%d'));
    // TODO: redirect
}