SolidlSnake
@SolidlSnake
Ваш дружелюбный сосед

Логин в ВК с помощью Kotlin/Java?

В этом посте (который к сожалению аж 2012 года) у автора получилось написать функцию, которая сама получала Access Token.
Сейчас необходимо сделать тоже самое.
Функция на Kotlin которая имеется (полный аналог из поста):
//Здесь добавлено, дабы не было ошибки при работе с cookie
    val globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build()
    val httpClient = HttpClientBuilder.create().setDefaultRequestConfig(globalConfig).build()
    var post = HttpPost(
                    "http://oauth.vk.com/authorize?" +
                    "client_id=" + id +
                    "&scope=" + "wall,photos" +
                    "&redirect_uri=" + "https://oauth.vk.com/blank.html" +
                    "&display=" + "popup" +
                    "&response_type=" + "token"
    )
    var response = httpClient.execute(post)
    post.abort()

// Тут ошибка NullPointerException
    var headerLocation = response.getFirstHeader("location").value
    val uri = URI(headerLocation)

    val ip_h = uri.query.split("&")[2].split("=")[1]
    val to_h = uri.query.split("&")[4].split("=")[1]

    post = HttpPost(
                    "https://login.vk.com/?act=login&soft=1"+
                    "&q=1"+
                    "&ip_h="+ip_h+
                    "&from_host=oauth.vk.com"+
                    "&to="+to_h+
                    "&expire=0"+
                    "&email="+ login +
                    "&pass="+ pass
    )
    response = httpClient.execute(post)
    post.abort()
    headerLocation = response.getFirstHeader("location").value

    post = HttpPost(headerLocation)
    response = httpClient.execute(post)
    post.abort()

    headerLocation = response.getFirstHeader("location").value

    httpClient.close()

    return headerLocation.split("#")[1].split("&")[0].split("=")[1]

Но проблема в том, что уже после первого post запроса в ответе не имеется header Location (место ошибки отметил комментарием), хотя если скопировать строку и вставить в браузер все впорядке.
Можно ли как то обойти это дело?
  • Вопрос задан
  • 1359 просмотров
Пригласить эксперта
Ответы на вопрос 1
jaxtr
@jaxtr
JavaEE/Spring-разработчик
Есть уже готовые решения вроде Spring Social VKontakte.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы