@vvmgev

Как авторизоваться с помощью одноклассников?

как описано ТУТ сделал первые 3 шаги а после этого не знаю что делать в 4->б написено
После получения ключа доступа access_token ваше приложение получит возможность совершать запросы к API от имени авторизованного пользователя.

но я не какой access_token не получиль
  • Вопрос задан
  • 5737 просмотров
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Ключ доступа (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>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы