/** * Display a debugging area. * * This function is highly inspired by the Query Monitor. * https://wordpress.org/plugins/query-monitor/ * * Note: in order for this function to display the sql queries, 'SAVEQUERIES' should be defined as true in 'wp-config.php' */ function wsl_display_dev_mode_debugging_area($keyword = 'wsl_') { global $wpdb, $wp_actions, $wp_filter; ?> <style> .wsl-dev-nonselectsql { color: #a0a !important; } .wsl-dev-expensivesql { color: #f44 !important; } .wsl-dev-optionfunc { color: #4a4 !important; } .wsl-dev-wslfunc { color: #1468fa !important; } .wsl-dev-nonwslfunc { color: #a0a !important; } .wsl-dev-usedhook, .wsl-dev-usedhook a { color: #1468fa; } .wsl-dev-usedwslhook { color: #a0a !important; } .wsl-dev-unusedhook, .wsl-dev-unusedhook a{ color: #a3a3a3 !important; } .wsl-dev-hookcallback, .wsl-dev-hookcallback a { color: #4a4 !important; } .wsl-dev-table { width:100%; border: 1px solid #e5e5e5; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); border-spacing: 0; clear: both; margin: 0; width: 100%; } .wsl-dev-table td, .wsl-dev-table th { border: 1px solid #dddddd; padding: 8px 10px; background-color: #fff; text-align: left; } </style> <?php if (class_exists('Hybrid_Error', false) && Hybrid_Error::getApiError()) { ?> <h4>Provider API Error</h4> <table class="wsl-dev-table"> <tr> <td> <?php echo Hybrid_Error::getApiError(); ?> </td> </tr> </table> <?php } ?> <h4>SQL Queries</h4> <table class="wsl-dev-table"> <tr> <td colspan="3"> 1. SAVEQUERIES should be defined and set to TRUE in order for the queries to show up (http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis) <br /> 2. Calls for get_option() don't necessarily result on a query to the database. WP use both cache and wp_load_alloptions() to load all options at once. Hence, it won't be shown here. </td> </tr> <?php $queries = $wpdb->queries; $total_wsl_queries = 0; $total_wsl_queries_time = 0; if ($queries) { foreach ($queries as $item) { $sql = trim($item[0]); $time = $item[1]; $stack = $item[2]; $sql = str_ireplace(array(' FROM ', ' WHERE ', ' LIMIT ', ' GROUP BY ', ' ORDER BY ', ' SET '), array("\n" . 'FROM ', "\n" . 'WHERE ', "\n" . 'LIMIT ', "\n" . 'GROUP BY ', "\n" . 'ORDER BY ', "\n" . 'SET '), $sql); # https://wordpress.org/plugins/query-monitor/ $callers = explode(',', $stack); $caller = trim(end($callers)); if (false !== strpos($caller, '(')) { $caller_name = substr($caller, 0, strpos($caller, '(')) . '()'; } else { $caller_name = $caller; } if (stristr($caller_name, $keyword) || stristr($sql, $keyword) || stristr($stack, $keyword)) { ?> <tr> <td valign="top" width="450"> <?php if (stristr($caller_name, $keyword)) { ?> <a href="https://github.com/hybridauth/WordPress-Social-Login/search?q=<?php echo $caller_name; ?> " target="_blank" class="wsl-dev-wslfunc"><?php echo $caller_name; ?> </a> <?php } else { ?> <a href="https://developer.wordpress.org/?s=<?php echo $caller_name; ?> " target="_blank" class="wsl-dev-nonwslfunc<?php if (stristr($caller_name, '_option')) { echo "- wsl-dev-optionfunc"; } ?> "><?php echo $caller_name; ?> </a> <?php } ?> <p style="font-size:11px; margin-left:10px"> <?php if (count($callers)) { # God damn it for ($i = count($callers) - 1; $i > 0; $i--) { if (!stristr($callers[$i], '.php') && !stristr($callers[$i], 'call_user_func_')) { echo "#{$i} " . $callers[$i] . '<br />'; } } } ?> </p> </td> <td valign="top" class="<?php if (!stristr('#' . $sql, '#select ')) { echo 'wsl-dev-nonselectsql'; } ?> "><?php echo nl2br($sql); ?> </td> <td valign="top" width="50" nowrap class="<?php if ($time > 0.05) { echo 'wsl-dev-expensivesql'; } ?> "><?php echo number_format($time, 4, '.', ''); ?> </td> </tr> <?php $total_wsl_queries++; $total_wsl_queries_time += $time; } } } ?> <tr> <td colspan="2">Total SQL Queries by WSL : <?php echo $total_wsl_queries; ?> </td> <td width="50" nowrap><?php echo number_format($total_wsl_queries_time, 4, '.', ''); ?> </td> </tr> </table> <h4>Hooks</h4> <table class="wsl-dev-table"> <?php if ($wp_actions) { foreach ($wp_actions as $name => $count) { if (isset($wp_filter[$name])) { $action = $wp_filter[$name]; if ($action) { foreach ($action as $priority => $callbacks) { foreach ($callbacks as $callback) { if (isset($callback['function']) && is_string($callback['function'])) { if (stristr($callback['function'], $keyword) || stristr($name, $keyword)) { ?> <tr> <td valign="top" width="270" nowrap class="wsl-dev-usedhook"> <?php if (stristr($name, $keyword)) { ?> <a class="wsl-dev-usedwslhook" href="https://github.com/hybridauth/WordPress-Social-Login/search?q=<?php echo $name; ?> " target="_blank"><?php echo $name; ?> </a> <?php } else { echo $name; } ?> </td> <td valign="top" class="wsl-dev-hookcallback"> <?php if (stristr($callback['function'], $keyword)) { ?> <a href="https://github.com/hybridauth/WordPress-Social-Login/search?q=<?php echo $callback['function']; ?> " target="_blank"><?php echo $callback['function']; ?> </a> <?php } else { echo $callback['function']; } // I hit a record ?> </td> <td valign="top" width="50"> <?php echo $priority; ?> </td> <td valign="top" width="50"> <?php echo $callback['accepted_args']; ?> </td> </tr> <?php } } } } } } elseif (stristr($name, $keyword)) { ?> <tr> <td valign="top" width="270" nowrap class="wsl-dev-unusedhook"> <a href="https://github.com/hybridauth/WordPress-Social-Login/search?q=<?php echo $name; ?> " target="_blank"><?php echo $name; ?> </a> </td> <td></td> <td></td> <td></td> </tr> <?php } } } ?> </table> <h4>PHP Session</h4> <table class="wsl-dev-table"> <?php foreach ($_SESSION as $k => $v) { ?> <tr><th width="270"><label><?php echo $k; ?> </label></th><td><?php print_r($v); ?> </td></tr> <?php } ?> </tbody> </table> <h4>Wordpress</h4> <table class="wsl-dev-table"> <tbody> <tr><th width="270"><label>Version</label></th><td><?php echo get_bloginfo('version'); ?> </td></tr> <tr><th><label>Multi-site</label></th><td><?php echo is_multisite() ? 'Yes' . "\n" : 'No'; ?> </td></tr> <tr><th><label>Site url</label></th><td><?php echo site_url(); ?> </td></tr> <tr><th><label>Home url</label></th><td><?php echo home_url(); ?> </td></tr> <tr><th><label>Plugins url</label></th><td><?php echo plugins_url(); ?> </td></tr> </tbody> </table> <h4>WSL</h4> <table class="wsl-dev-table"> <tbody> <tr><th width="270"><label>Version</label></th><td><?php echo wsl_get_version(); ?> </td></tr> <tr><th><label>Plugin path</label></th><td><?php echo WORDPRESS_SOCIAL_LOGIN_ABS_PATH; ?> </td></tr> <tr><th><label>Plugin url</label></th><td><?php echo WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL; ?> </td></tr> <tr><th><label>HA endpoint</label></th><td><?php echo WORDPRESS_SOCIAL_LOGIN_HYBRIDAUTH_ENDPOINT_URL; ?> </td></tr> </tbody> </table> <h4>Website</h4> <table class="wsl-dev-table"> <tbody> <tr><th width="270"><label>IP</label></th><td><?php echo $_SERVER['SERVER_ADDR']; ?> </td></tr> <tr><th><label>Domain</label></th><td><?php echo $_SERVER['HTTP_HOST']; ?> </td></tr> <tr><th><label>Port</label></th><td><?php echo isset($_SERVER['SERVER_PORT']) ? 'On (' . $_SERVER['SERVER_PORT'] . ')' : 'N/A'; ?> </td></tr> <tr><th><label>X Forward</label></th><td><?php echo isset($_SERVER['HTTP_X_FORWARDED_PROTO']) ? 'On (' . $_SERVER['HTTP_X_FORWARDED_PROTO'] . ')' : 'N/A'; ?> </td></tr> </tbody> </table> <h4>Software</h4> <table class="wsl-dev-table"> <tbody> <tr><th width="270"><label>Server</label></th><td><?php echo $_SERVER['SERVER_SOFTWARE']; ?> </td></tr> <tr><th><label>PHP</label></th><td><?php echo PHP_VERSION; ?> </td></tr> <tr><th><label>MySQL</label></th><td><?php echo $wpdb->db_version(); ?> </td></tr> <tr><th><label>Time</label></th><td><?php echo date(DATE_ATOM, time()); ?> / <?php echo time(); ?> </td></tr> </tbody> </table> <h4>MySQL</h4> <table class="wsl-dev-table"> <tbody> <tr><th width="270"><label>Host</label></th><td><?php echo $wpdb->dbhost; ?> </td></tr> <tr><th><label>User</label></th><td><?php echo $wpdb->dbuser; ?> </td></tr> <tr><th><label>Database</label></th><td><?php echo $wpdb->dbname; ?> </td></tr> <tr><th><label>Prefix</label></th><td><?php echo $wpdb->prefix; ?> </td></tr> <tr><th><label>Base_prefix</label></th><td><?php echo $wpdb->prefix; ?> </td></tr> <tr><th><label>Num_queries</label></th><td><?php echo $wpdb->num_queries; ?> </td></tr> </tbody> </table> <?php }
/** * Display an error message in case user authentication fails */ function wsl_process_login_render_error_page($e, $config = null, $provider = null, $adapter = null) { // HOOKABLE: do_action("wsl_process_login_render_error_page", $e, $config, $provider, $adapter); $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . 'assets/img/'; $message = _wsl__("Unspecified error!", 'wordpress-social-login'); $notes = ""; $apierror = substr($e->getMessage(), 0, 145); switch ($e->getCode()) { case 0: $message = _wsl__("Unspecified error.", 'wordpress-social-login'); break; case 1: $message = _wsl__("WordPress Social Login is not properly configured.", 'wordpress-social-login'); break; case 2: $message = sprintf(__wsl__("WordPress Social Login is not properly configured.<br /> <b>%s</b> need to be properly configured.", 'wordpress-social-login'), $provider); break; case 3: $message = _wsl__("Unknown or disabled provider.", 'wordpress-social-login'); break; case 4: $message = sprintf(_wsl__("WordPress Social Login is not properly configured.<br /> <b>%s</b> requires your application credentials.", 'wordpress-social-login'), $provider); $notes = sprintf(_wsl__("<b>What does this error mean ?</b><br />Most likely, you didn't setup the correct application credentials for this provider. These credentials are required in order for <b>%s</b> users to access your website and for WordPress Social Login to work.", 'wordpress-social-login'), $provider) . _wsl__('<br />Instructions for use can be found in the <a href="http://miled.github.io/wordpress-social-login/networks.html" target="_blank">User Manual</a>.', 'wordpress-social-login'); break; case 5: $message = sprintf(_wsl__("Authentication failed. Either you have cancelled the authentication or <b>%s</b> refused the connection.", 'wordpress-social-login'), $provider); break; case 6: $message = sprintf(_wsl__("Request failed. Either you have cancelled the authentication or <b>%s</b> refused the connection.", 'wordpress-social-login'), $provider); break; case 7: $message = _wsl__("You're not connected to the provider.", 'wordpress-social-login'); break; case 8: $message = _wsl__("Provider does not support this feature.", 'wordpress-social-login'); break; } if (is_object($adapter)) { $adapter->logout(); } // provider api response if (class_exists('Hybrid_Error', false) && Hybrid_Error::getApiError()) { $tmp = Hybrid_Error::getApiError(); $apierror = $apierror . "\n" . '<br />' . $tmp; // network issue if (trim($tmp) == '0.') { $apierror = "Could not establish connection to provider API"; } } return wsl_render_error_page($message, $notes, $provider, $apierror, $e); }
function wsl_component_authtest() { // HOOKABLE: do_action("wsl_component_authtest_start"); $adapter = null; $provider_id = isset($_REQUEST["provider"]) ? $_REQUEST["provider"] : null; $user_profile = null; $assets_base_url = WORDPRESS_SOCIAL_LOGIN_PLUGIN_URL . 'assets/img/'; if (!class_exists('Hybrid_Auth', false)) { require_once WORDPRESS_SOCIAL_LOGIN_ABS_PATH . "hybridauth/Hybrid/Auth.php"; } try { $provider = Hybrid_Auth::getAdapter($provider_id); // make as few call as possible if (!(isset($_SESSION['wsl::userprofile']) && $_SESSION['wsl::userprofile'] && ($user_profile = json_decode($_SESSION['wsl::userprofile'])))) { $user_profile = $provider->getUserProfile(); $_SESSION['wsl::userprofile'] = json_encode($user_profile); } $adapter = $provider->adapter; } catch (Exception $e) { } $ha_profile_fields = array(array('field' => 'identifier', 'label' => _wsl__("Provider user ID", 'wordpress-social-login')), array('field' => 'profileURL', 'label' => _wsl__("Profile URL", 'wordpress-social-login')), array('field' => 'webSiteURL', 'label' => _wsl__("Website URL", 'wordpress-social-login')), array('field' => 'photoURL', 'label' => _wsl__("Photo URL", 'wordpress-social-login')), array('field' => 'displayName', 'label' => _wsl__("Display name", 'wordpress-social-login')), array('field' => 'description', 'label' => _wsl__("Description", 'wordpress-social-login')), array('field' => 'firstName', 'label' => _wsl__("First name", 'wordpress-social-login')), array('field' => 'lastName', 'label' => _wsl__("Last name", 'wordpress-social-login')), array('field' => 'gender', 'label' => _wsl__("Gender", 'wordpress-social-login')), array('field' => 'language', 'label' => _wsl__("Language", 'wordpress-social-login')), array('field' => 'age', 'label' => _wsl__("Age", 'wordpress-social-login')), array('field' => 'birthDay', 'label' => _wsl__("Birth day", 'wordpress-social-login')), array('field' => 'birthMonth', 'label' => _wsl__("Birth month", 'wordpress-social-login')), array('field' => 'birthYear', 'label' => _wsl__("Birth year", 'wordpress-social-login')), array('field' => 'email', 'label' => _wsl__("Email", 'wordpress-social-login')), array('field' => 'phone', 'label' => _wsl__("Phone", 'wordpress-social-login')), array('field' => 'address', 'label' => _wsl__("Address", 'wordpress-social-login')), array('field' => 'country', 'label' => _wsl__("Country", 'wordpress-social-login')), array('field' => 'region', 'label' => _wsl__("Region", 'wordpress-social-login')), array('field' => 'city', 'label' => _wsl__("City", 'wordpress-social-login')), array('field' => 'zip', 'label' => _wsl__("Zip", 'wordpress-social-login'))); ?> <style> .widefat td, .widefat th { border: 1px solid #DDDDDD; } .widefat th label { font-weight: bold; } .wp-social-login-provider-list { padding: 10px; } .wp-social-login-provider-list a {text-decoration: none; } .wp-social-login-provider-list img{ border: 0 none; } </style> <div class="metabox-holder columns-2" id="post-body"> <table width="100%"> <tr valign="top"> <td> <?php if (!$adapter) { ?> <div style="padding: 15px; margin-bottom: 8px; border: 1px solid #ddd; background-color: #fff;box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);"> <p><?php _wsl_e("Connect with a provider to get started", 'wordpress-social-login'); ?> .</p> </div> <?php } else { ?> <div class="stuffbox"> <h3> <label><?php _wsl_e("Connected adapter specs", 'wordpress-social-login'); ?> </label> </h3> <div class="inside"> <table class="wp-list-table widefat"> <tr> <th width="200"><label><?php _wsl_e("Provider", 'wordpress-social-login'); ?> </label></th> <td><?php echo $adapter->providerId; ?> </td> </tr> <?php if (isset($adapter->openidIdentifier)) { ?> <tr> <th width="200"><label><?php _wsl_e("OpenID Identifier", 'wordpress-social-login'); ?> </label></th> <td><?php echo $adapter->openidIdentifier; ?> </td> </tr> <?php } ?> <?php if (isset($adapter->scope)) { ?> <tr> <th width="200"><label><?php _wsl_e("Scope", 'wordpress-social-login'); ?> </label></th> <td><?php echo $adapter->scope; ?> </td> </tr> <?php } ?> <?php if (isset($adapter->config['keys'])) { ?> <tr> <th width="200"><label><?php _wsl_e("Application keys", 'wordpress-social-login'); ?> </label></th> <td><div style="max-width:650px"><?php echo json_encode($adapter->config['keys']); ?> </div></td> </tr> <?php } ?> <?php if ($adapter->token("access_token")) { ?> <tr> <th width="200"><label><?php _wsl_e("Access token", 'wordpress-social-login'); ?> </label></th> <td><div style="max-width:650px"><?php echo $adapter->token("access_token"); ?> </div></td> </tr> <?php } ?> <?php if ($adapter->token("access_token_secret")) { ?> <tr> <th width="200"><label><?php _wsl_e("Access token secret", 'wordpress-social-login'); ?> </label></th> <td><?php echo $adapter->token("access_token_secret"); ?> </td> </tr> <?php } ?> <?php if ($adapter->token("expires_in")) { ?> <tr> <th width="200"><label><?php _wsl_e("Access token expires in", 'wordpress-social-login'); ?> </label></th> <td><?php echo (int) $adapter->token("expires_at") - time(); ?> <?php _wsl_e("second(s)", 'wordpress-social-login'); ?> </td> </tr> <?php } ?> <?php if ($adapter->token("expires_at")) { ?> <tr> <th width="200"><label><?php _wsl_e("Access token expires at", 'wordpress-social-login'); ?> </label></th> <td><?php echo date(DATE_W3C, $adapter->token("expires_at")); ?> </td> </tr> <?php } ?> </table> </div> </div> <?php $console = false; if (!isset($adapter->openidIdentifier)) { ?> <div class="stuffbox"> <h3> <label><?php _wsl_e("Connected adapter console", 'wordpress-social-login'); ?> </label> </h3> <div class="inside"> <?php $path = isset($adapter->api->api_base_url) ? $adapter->api->api_base_url : ''; $path = isset($_REQUEST['console-path']) ? $_REQUEST['console-path'] : $path; $method = isset($_REQUEST['console-method']) ? $_REQUEST['console-method'] : ''; $query = isset($_REQUEST['console-query']) ? $_REQUEST['console-query'] : ''; $response = ''; if ($path && in_array($method, array('GET', 'POST'))) { $console = true; try { if ($method == 'GET') { $response = $adapter->api->get($path . ($query ? '?' . $query : '')); } else { $response = $adapter->api->get($path, $query); } $response = $response ? $response : Hybrid_Error::getApiError(); } catch (Exception $e) { $response = "ERROR: " . $e->getMessage(); } } ?> <form action="" method="post"/> <table class="wp-list-table widefat"> <tr> <th width="200"><label><?php _wsl_e("Path", 'wordpress-social-login'); ?> </label></th> <td><input type="text" style="width:96%" name="console-path" value="<?php echo htmlentities($path); ?> "><a href="https://apigee.com/providers" target="_blank"><img src="<?php echo $assets_base_url . 'question.png'; ?> " style="vertical-align: text-top;" /></a></td> </tr> <tr> <th width="200"><label><?php _wsl_e("Method", 'wordpress-social-login'); ?> </label></th> <td><select style="width:100px" name="console-method"><option value="GET" <?php if ($method == 'GET') { echo 'selected'; } ?> >GET</option><!-- <option value="POST" <?php if ($method == 'POST') { echo 'selected'; } ?> >POST</option>--></select></td> </tr> <tr> <th width="200"><label><?php _wsl_e("Query", 'wordpress-social-login'); ?> </label></th> <td><textarea style="width:100%;height:60px;margin-top:6px;" name="console-query"><?php echo htmlentities($query); ?> </textarea></td> </tr> </table> <br /> <input type="submit" value="<?php _wsl_e("Submit", 'wordpress-social-login'); ?> " class="button"> </form> </div> </div> <?php if ($console) { ?> <div class="stuffbox"> <h3> <label><?php _wsl_e("API Response", 'wordpress-social-login'); ?> </label> </h3> <div class="inside"> <textarea rows="25" cols="70" wrap="off" style="width:100%;height:400px;margin-bottom:15px;font-family: monospace;font-size: 12px;"><?php echo htmlentities(print_r($response, true)); ?> </textarea> </div> </div> <?php if (0) { ?> <div class="stuffbox"> <h3> <label><?php _wsl_e("Code PHP", 'wordpress-social-login'); ?> </label> </h3> <div class="inside"> <textarea rows="25" cols="70" wrap="off" style="width:100%;height:210px;margin-bottom:15px;font-family: monospace;font-size: 12px;" >include_once WORDPRESS_SOCIAL_LOGIN_ABS_PATH . 'hybridauth/Hybrid/Auth.php'; /*! Important Direct access to providers apis is newly introduced into WSL and we are still experimenting, so they may change in future releases. */ try { $<?php echo strtolower($adapter->providerId); ?> = Hybrid_Auth::getAdapter( '<?php echo htmlentities($provider_id); ?> ' ); <?php if ($method == 'GET') { ?> $response = $<?php echo strtolower($adapter->providerId); ?> ->api()->get( '<?php echo htmlentities($path . ($query ? '?' . $query : '')); ?> ' ); <?php } else { ?> $response = $<?php echo strtolower($adapter->providerId); ?> ->api()->post( '<?php echo htmlentities($path); ?> ', (array) $query ); <?php } ?> } catch( Exception $e ) { echo "Ooophs, we got an error: " . $e->getMessage(); }</textarea> </div> </div> <div class="stuffbox"> <h3> <label><?php _wsl_e("Connected adapter debug", 'wordpress-social-login'); ?> </label> </h3> <div class="inside"> <textarea rows="25" cols="70" wrap="off" style="width:100%;height:400px;margin-bottom:15px;font-family: monospace;font-size: 12px;"><?php echo htmlentities(print_r($adapter, true)); ?> </textarea> </div> </div> <div class="stuffbox"> <h3> <label><?php _wsl_e("PHP Session", 'wordpress-social-login'); ?> </label> </h3> <div class="inside"> <textarea rows="25" cols="70" wrap="off" style="width:100%;height:350px;margin-bottom:15px;font-family: monospace;font-size: 12px;"><?php echo htmlentities(print_r($_SESSION, true)); ?> </textarea> </div> </div> <?php } ?> <?php } ?> <?php } ?> <?php if (!$console) { ?> <div class="stuffbox"> <h3> <label><?php _wsl_e("Connected user social profile", 'wordpress-social-login'); ?> </label> </h3> <div class="inside"> <table class="wp-list-table widefat"> <?php $user_profile = (array) $user_profile; foreach ($ha_profile_fields as $item) { $item['field'] = $item['field']; ?> <tr> <th width="200"> <label><?php echo $item['label']; ?> </label> </th> <td> <?php if (isset($user_profile[$item['field']]) && $user_profile[$item['field']]) { $field_value = $user_profile[$item['field']]; if (in_array(strtolower($item['field']), array('profileurl', 'websiteurl', 'email'))) { ?> <a href="<?php if ($item['field'] == 'email') { echo 'mailto:'; } echo $field_value; ?> " target="_blank"><?php echo $field_value; ?> </a> <?php } elseif (strtolower($item['field']) == 'photourl') { ?> <a href="<?php echo $field_value; ?> " target="_blank"><img width="36" height="36" align="left" src="<?php echo $field_value; ?> " style="margin-right: 5px;" > <?php echo $field_value; ?> </a> <?php } else { echo $field_value; } } ?> </td> </tr> <?php } ?> </table> </div> </div> <?php } ?> <?php } ?> </td> <td width="10"></td> <td width="400"> <div class="postbox"> <div class="inside"> <h3><?php _wsl_e("Authentication Playground", 'wordpress-social-login'); ?> </h3> <div style="padding:0 20px;"> <p> <?php _wsl_e('Authentication Playground will let you authenticate with the enabled social networks without creating any new user account', 'wordpress-social-login'); ?> . </p> <p> <?php _wsl_e('This tool will also give you a direct access to social networks apis via a lightweight console', 'wordpress-social-login'); ?> . </p> </div> </div> </div> </style> <div class="postbox"> <div class="inside"> <div style="padding:0 20px;"> <p> <?php _wsl_e("Connect with", 'wordpress-social-login'); ?> : </p> <div style="width: 380px; padding: 10px; border: 1px solid #ddd; background-color: #fff;"> <?php do_action('wordpress_social_login', array('mode' => 'test', 'caption' => '')); ?> </div> </div> </div> </div> </td> </tr> </table> </div> <?php // HOOKABLE: do_action("wsl_component_authtest_end"); }