V
V
vvmgev2016-02-21 11:09:41
API
vvmgev, 2016-02-21 11:09:41

How to log in using classmates?

as described HERE did the first 3 steps and after that I don’t know what to do in 4->b it is written

After receiving the access_token, your application will be able to make requests to the API on behalf of an authorized user.

but I didn't get any access_token

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Алексей Немиро, 2016-02-21
@vvmgev

Ключ доступа (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>

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question