function add_fake_emails_for_testing()
{
    for ($i = 1; $i <= 30; $i++) {
        rgt_fb_email_button_add_email("email{$i}@test.net");
    }
}
function rgt_fb_email_button_shortcode()
{
    $options = get_option('rgt_fb_email_button_settings');
    $app_id = $options['rgt_fb_email_button_app_id'];
    $app_secret = $options['rgt_fb_email_button_app_secret'];
    $site_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    wp_register_style('rgt_fb_email_button_css', plugins_url('fb_email_button_style.css', __FILE__));
    wp_enqueue_style('rgt_fb_email_button_css');
    if (!($app_id and $app_secret)) {
        $error = rgt_fb_email_button_error_wrapper('Facebook App ID and App Secret must be set in the Settings before using this plugin.');
        return $error;
    } else {
        require_once __DIR__ . '/Facebook_SDK/autoload.php';
        $fb = new Facebook\Facebook(['app_id' => $app_id, 'app_secret' => $app_secret, 'default_graph_version' => 'v2.5', 'default_access_token' => $app_id . '|' . $app_secret]);
        $helper = $fb->getRedirectLoginHelper();
        if (isset($_GET['code'])) {
            // API Callback
            try {
                $accessToken = $helper->getAccessToken();
            } catch (Facebook\Exceptions\FacebookResponseException $e) {
                $error = rgt_fb_email_button_error_wrapper('Invalid Facebook App Info.');
                return $error;
            } catch (Facebook\Exceptions\FacebookSDKException $e) {
                $error = rgt_fb_email_button_error_wrapper('Invalid Facebook App Info.');
                return $error;
            }
            if (isset($accessToken)) {
                $oAuth2Client = $fb->getOAuth2Client();
                $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
                $_SESSION['rgt_fb_email_button_facebook_access_token'] = (string) $longLivedAccessToken;
                // Get data
                $fb->setDefaultAccessToken($longLivedAccessToken);
                try {
                    $response = $fb->get('/me?fields=email');
                } catch (Facebook\Exceptions\FacebookResponseException $e) {
                    $error = rgt_fb_email_button_error_wrapper('Graph returned an error: ' . $e->getMessage());
                    return $error;
                } catch (Facebook\Exceptions\FacebookSDKException $e) {
                    $error = rgt_fb_email_button_error_wrapper('Facebook SDK returned an error: ' . $e->getMessage());
                    return $error;
                }
                $graphObject = $response->getGraphObject();
                $id = $graphObject->getProperty('id');
                $email = $graphObject->getProperty('email');
                rgt_fb_email_button_add_email($email);
                $js_redirect = "<script>window.location = '" . strtok($site_url, '?') . "'</script>";
                return $js_redirect;
            }
        }
        if (!isset($_SESSION['rgt_fb_email_button_facebook_access_token']) or !$_SESSION['rgt_fb_email_button_facebook_access_token']) {
            $permissions = array('public_profile', 'email');
            $loginUrl = $helper->getLoginUrl($site_url, $permissions);
            $button = "<a class=\"btn_blue\" onclick=\"location.href='{$loginUrl}'\">Subscribe</a>";
        } else {
            $button = "<a class=\"btn_green\">Subscribed!</a>";
        }
        return $button;
    }
}