PHP代码:
<?php
session_start(); // Токен будем хранить в сессии
// Выводим на экран ссылку для открытия окна диалога авторизации
$clientId = ''; // ID приложения
$clientSecret = ''; // Защищённый ключ
$redirectUri = ''; // Адрес, на который будет переадресован пользователь после прохождения авторизации
// Формируем ссылку для авторизации
$params = array(
'client_id' => $clientId,
'redirect_uri' => $redirectUri,
'response_type' => 'code',
'v' => '5.74', // (обязательный параметр) версия API, которую Вы используете https://vk.com/dev/versions
// Права доступа приложения
// Если указать "offline", полученный access_token будет "вечным" (токен умрёт, если пользователь сменит свой пароль или удалит приложение).
// Если не указать "offline", то полученный токен будет жить 12 часов.
'scope' => '140491999',
);
// Выводим на экран ссылку для открытия окна диалога авторизации
echo '<a href="http://oauth.vk.com/authorize?' . urldecode(http_build_query( $params )) . '">Авторизация через ВКонтакте</a>';
if (isset($_GET['code'])) {
$params = array(
'client_id' => $clientId,
'client_secret' => $clientSecret,
'code' => $_GET['code'],
'v' => '5.74',
'redirect_uri' => $redirectUri
);
$token = json_decode(file_get_contents('https://oauth.vk.com/access_token' . '?' . urldecode(http_build_query($params))), true);
echo $token;
}
?>
我得到:
{"error":"invalid_scope","error_description":"standalone applications should use blank.html as redirect_uri to access messages"}
错误本身是可以理解的,但问题仍然是: 如何通过php获取消息等的访问权限?
跟谁解释不难,不然我就傻了。提前致谢。
当您在 VK 平台为开发者注册您的应用程序时,您指定了类型 - 独立,而不是网站。
独立的登录页面始终是固定的 - 空白.html,这是因为独立应用程序自己收到一个 access_token,网站在服务器上。
注册一个网站类型的应用程序,你就可以开始了。
我建议您将来使用库进行授权,例如:
https://github.com/socialconnect/auth