Авторизация вконтакте с автоматической отправкой формы
В общем, есть сайт на вордпрессе. Необходимо грамотно вытащить имейл пользователя вконтакте и отправить форму с подпиской (используется плагин newsletter - https://wordpress.org/plugins/newsletter/).
Что код делает сейчас: при клике на ссылку открывается новое окно, перегружается активная страница, имейл адрес постится в инпуте. Все это дело отрабатывает очень долго.
Цель: при клике на ссылку быстро вытащить имейл, автоматически засабмитить форму и закрыть окно (если ссылка будет также открываться в новом окне). С PHP не очень дружу, поэтому приветствуются исчерпывающие ответы. Спасибо.
<?php
$client_id = '******'; // ID приложения
$client_secret = '*********'; // Защищённый ключ
$redirect_uri = '***********'; // Адрес сайта
$url = 'http://oauth.vk.com/authorize';
$params = array(
'client_id' => $client_id,
'redirect_uri' => $redirect_uri,
'scope' => 'email',
'response_type' => 'code'
);
echo $link = '<a target="_blank" href="' . $url . '?' . urldecode(http_build_query($params)) . '">Подписаться через вконтакте</a>';
if (isset($_GET['code'])) {
$result = false;
$params = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'code' => $_GET['code'],
'redirect_uri' => $redirect_uri
);
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($params))), true);
if (isset($token['access_token'])) {
$params = array(
'uids' => $token['user_id'],
'email' => $token['email'],
'fields' => 'uid,email,first_name,last_name',
'access_token' => $token['access_token']
);
$userInfo = json_decode(file_get_contents('https://api.vk.com/method/users.get' . '?' . urldecode(http_build_query($params))), true);
if (isset($userInfo['response'][0]['uid'])) {
$userInfo = $userInfo['response'][0];
$result = true;
}
}
}?>
<form method="post" action="subscribe.php">
<input class="input" placeholder="Ваш E-Mail" required="required" name="ne" value="<?php echo $token['email']?>"type="email" />
<input class="button" type="submit" name="yt0" value="Подписаться" />
</form>
Источник: Stack Overflow на русском