LINUX.ORG.RU

Получение данных после якоря #

 , ,


0

3

По мотивам Посоветуйте библиотеки.

Так, тут сказано

3. Получение access_token
После успешной авторизации приложения браузер пользователя 
будет перенаправлен по адресу REDIRECT_URI, указанному при 
открытии диалога авторизации. При этом ключ доступа к API 
access_token и другие параметры будут переданы в 
URL-фрагменте ссылки:

http://REDIRECT_URI#access_token= 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492


Хорошо, пока мне не дали прямую авторизацию (с которой эта хренатень с браузерами будет ненужна)для приложения я запускаю локальный сервер вешаю на localhost:8080 это REDIRECT_URI всё нормально токен дают, но после # данные же не отправляются на сервер как быть то? Просить пользователя копировать токен и сохранять как в vksearch не хочется.

Тут смотрю два подписались так что вот решение. В настройках приложения выставляем http://localhost иначе будет ругаться на некорректный REDIRECT_URI. Затем шлём пользователя на

https://oauth.vk.com/authorize?client_id=ID_ПРИЛОЖЕНИЯ&display=page&redirect_uri=http://localhost:8080&scope=message&response_type=token&v=5.45

На http://localhost:8080 должен уже висеть сервер и отдать как кому удобно это

<html>
<head>
    <meta charset="utf-8">
    <title>vklin</title> 
</head>
<script type="text/javascript" charset="utf-8">
    var anc = window.location.hash.replace("#","");
    if (anc == "") {anc = "none"} //тут можно средиректить на страницу с ошибкой
    var def_url ="http://localhost:8080/"; //редирект тупо на самого себя
    //alert(anc);
    window.location.replace((def_url+anc));//а теперь сервер получит GET запрос в теле которого таки уже будет токен
                                           //который останется только спарсить и сохранить. И можно дёргать VK API.
</script>
</html>

★★★★★

Просить пользователя копировать токен и сохранять как в vksearch не хочется.

А придется, иначе твоя уведомлялка превратится в чмонстра, тянущего webkit.

anonymous ()

Эта информация доступна JavaScript на открытой странице. Твой сервер может отдать такую страницу, которая извлечёт токен из адреса и отправит следом с помощью какого-нибудь AJAX или даже банального редиректа.

KivApple ★★★★★ ()
Последнее исправление: KivApple (всего исправлений: 1 )
Ответ на: комментарий от anonymous

Нет же, смотри обычно как для серверных приложений делают пользователь авторизируется и его редиректит на страницу сервера с токеном в теле URL и там его сервер получает же, тут тоже самое только сервер локальный.

Dron ★★★★★ ()
Ответ на: комментарий от KivApple

Так, пойду погуглю, приду, спасибо скажу.

Dron ★★★★★ ()
Ответ на: комментарий от Dron

То есть юзер полноценно пользуется ВК (который на 90% состоит из JS), а тут у него раз - и JS становится отключенным?

whoami ()
Ответ на: комментарий от Dron

А ВК у этого юзера как работает? И именно в этом случае вполне позволительно попросить либо включить JS, либо ручками скопировать токен (какой там тег для этого нужен? noscript?). Те, кто отключают скрипты, осознанно соглашаются на то, что многие вещи, которые у других происходят автоматически, придётся делать ручками.

KivApple ★★★★★ ()
Последнее исправление: KivApple (всего исправлений: 1 )
Ответ на: комментарий от KivApple

Ну да в принципе, к тому же мне только что отказали в прямой авторизации по логину и паролю, теперь уже точно http сервер одноразовый встраивать для перехвата токена придётся, вроде лишние сто строк, а воспринимаю уже как комбайн какой-то ::)

Ещё раз спасибо всем.

Dron ★★★★★ ()

У гугла есть вариант, когда они в заголовке окна токен показывают со статусом. Читай доку, должно быть наверное что-то похожее, если у тебя десктопное приложение.

invy ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.