В
этом посте (который к сожалению аж 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 (место ошибки отметил комментарием), хотя если скопировать строку и вставить в браузер все впорядке.
Можно ли как то обойти это дело?