Ключ доступа (
access_token) будет передан на страницу возврата, после авторизации пользователя.
Этот ключ необходимо выдернуть из адресной строки браузера и использовать для работы с
API.
Вот
на этой странице описан весь процесс.
1. Необходимо сформировать адрес для авторизации на основе шаблона (в одну строку, я разбил на несколько, чтобы влезло на один экран):
https://connect.ok.ru/oauth/authorize?client_id={clientId}&scope={scope}&
response_type=token&redirect_uri={redirectUri}&
layout={layout}&state={state}
response_type=token, чтобы сервер Одноклассники вернул
access_token в дополнительных параметрах (
hash) страницы возврата.
Вместо
{clientId} необходимо указать идентификатор своего приложения.
{scope} - права доступа, можно не указывать. Как минимум:
VALUABLE_ACCESS;PHOTO_CONTENT
, чтобы иметь возможность получить данные профиля пользователя.
{redirectUri} - страница возврата, на которой должен быть код (в данном случае код
JavaScript), который извлечет из адреса полученный ключ доступа, ну или обработает ситуацию, если в процессе авторизации произойдет какая-нибудь ошибка или пользователь откажется давать права приложению.
{layout} - тип окна, скорее всего подойдет
m - модальное окно, или
a - упрощенное.
{state} - можно указать любое свое значение, которое будет передано в исходном виде на страницу возврата. Обычно используется для передачи собственного идентификатора сессии авторизации, либо идентификатора локального пользователя, чтобы можно было понять, какой именно собственный (локальный) пользователь проходит авторизацию. Этот параметр использовать не обязательно.
В итоге адрес страницы авторизации может быть примерно таким (в одну строку):
https://connect.ok.ru/oauth/authorize?client_id=000000000&
scope=VALUABLE_ACCESS;PHOTO_CONTENT&response_type=token&
redirect_uri=https://localhost/auth_result.html&layout=m
На локальном сервере можно создать страницу
https://localhost/auth_result.html
с кодом обработки результатов (см. п2).
2. Сделать страницу возврата (
redirect_uri) и написать код извлечения ключа доступа и обработку ошибок.
При клиентской авторизации (
response_type=token), сервер Одноклассники вернет параметры ответа в дополнительных параметрах документа (
hash) в
URL, которые можно найти в свойстве
window.location.hash:
<script>
alert(window.location.hash);
// берем hash из url и разбиваем на массив по символу &
var params = window.location.hash.substr(1).split('&');
// перебираем массив
for (var i = 0; i < params.length; i++)
{
// разбиваем текущий элемент массив на новый массив по знаку =
var p = params[i].split('=');
// на выходе будет два элемента ключ-значение
// проверяем имя ключа
if (p[0] == 'access_token')
{
// показываем значение
alert('Нашли ключ доступа: ' + p[1]);
}
}
</script>