PDA

Просмотр полной версии : Авторизация VK (получение токена)


klaustrofobia
27.04.2015, 17:19
Здравствуйте, товарищи, знатоки! Не ругайте меня сильно, пожалуйста, я, конечно же, как всегда, допустил какую-то незначительную ошибку, которую не могу найти уже неделю :eek:
Дело в том, что у меня авторизация спотыкается где-то, а где, понять не могу.
Приходит code, флэшка его считывает, далее:

Security.allowDomain(" * ");

var TOKEN:LoadVars = new LoadVars();
TOKEN.onData = function(myToken:String){

if(myToken == undefined){
cons.text += "Error MT";
}
else{
func();
}
}

if(code != undefined){

TOKEN.load('https://oauth.vk.com/access_token?client_id=*******&client_secret=*******&redirect_uri=http://******.ru&code='+code, TOKEN, "GET");
}


Обратно ничего не приходит. А дальше - магия! Вставляю полученный code вручную в саму флэшку, т.е.

code="3wer8b322t48v72h";
TOKEN.load('https://oauth.vk.com/access_token?client_id=*******&client_secret=*******&redirect_uri=http://******.ru&code='+code, TOKEN, "GET");


И все работает! И токен тебе и все дела. Где я ошибся? Не ругайтесь)

caseyryan
27.04.2015, 18:45
Не специалист в as2, но почему там undefined используется?
Не лучше ли так:
if(!myToken)
if(code)

dark256
27.04.2015, 21:22
onData - не используйте. Оно криво работает.

klaustrofobia
29.04.2015, 12:29
Учел и то и другое, однако чудеса продолжаются))) истерика))
вручную код ставлю и ахаххаха, а автоматически сам не читает

caseyryan
29.04.2015, 18:13
Да нет там никаких чудес. Откуда вообще берется эта переменная code? Я не вижу этого в коде
Можно же поставить простой trace(code) и посмотреть что там в нем

klaustrofobia
01.05.2015, 17:42
code берется из адреса http://****url****.ru/?code=cf27c619dae73544a4
trace'ом эт не проверить, т.к. авторизацию приходится проверять уже на сайте, поэтому вывожу в текстовое поле и там этот код замечательным образом есть

caseyryan
01.05.2015, 18:07
trace'ом эт не проверить
Еще как проверить. Надо всего лишь отладочный плеер в браузер поставить и включить в IDE удаленную отладку.
Но раз в текстовое поле выводится, значит должно работать. Показывайте весь код. Наверняка проблема в коде. Или в этой переменной code есть лишние символы, типа \n или \t или \r

klaustrofobia
01.05.2015, 21:22
code передается js, так что когда флешка загружена, code ей уже известен, если он вообще есть


var MyCode:String = code;
TOKEN.onData = function(myToken:String){
cons.text += myToken;
if(!myToken){
cons.text += "Error MT"
}
else{
func();
}
}

cons.text += MyCode;

if(MyCode){
TOKEN.client_id = *********;
TOKEN.client_secret = ********;
TOKEN.redirect_uri = "http://**********.ru";
TOKEN.code = MyCode;
TOKEN.sendAndLoad('https://oauth.vk.com/access_token',TOKEN,"POST");
}


Выход: 8b735af1a7d6ac2ca1undefinedError MT

И теперь тоже самое если вручную вставить код =)


MyCode = "8b735af1a7d6ac2ca1";
cons.text += MyCode;

if(MyCode){

TOKEN.client_id = *********;
TOKEN.client_secret = ********;
TOKEN.redirect_uri = "http://**********.ru";
TOKEN.code = MyCode;
TOKEN.sendAndLoad('https://oauth.vk.com/access_token',TOKEN,"POST");
}


Выход: 8b735af1a7d6ac2ca1{"access_token":"5fbebc3818b9b2df981461bb5c14c04a598d8cc2b796ff0c0e7cbbe38ae6df7aec97d1fc080d6169a8f7d","expires_in":85993,"user_id":10743537,"email":"**......

Ну не прикол ли)

А насчет отладочного плеера спасибо)) взял на вооружение!) странно что я только сейчас об этом узнал)

caseyryan
01.05.2015, 21:47
Сделайте вот так:

cons.text += ">>>" + MyCode + "<<<"; // если тут все правильно, то это должно выглядеть так: >>>8b735af1a7d6ac2ca1<<<, а не так, к примеру >>>8b735af1a7d6ac2ca1 <<<

чтобы убедиться, что этот MyCode не содержит никаких лишних символов, типа пробела. Больше, чем уверен, что туда приходит что-то левое

klaustrofobia
02.05.2015, 18:07
Все печально

>>>930ea48ffef28e2a93<<<undefinedError MT

klaustrofobia
11.05.2015, 17:02
вот даже решил передавать код флешке не через JS, а PHP записать в файл, а потом прочитать с флешки, но та же ерунда повторяется. никогда я так надолго не застревал

caseyryan
11.05.2015, 17:34
Так в предыдущем сообщении же был этот код между >>><<< Разве не удалось его оттуда выдрать?

klaustrofobia
12.05.2015, 19:00
так вот тут и мистика, что он как бы и есть, но ничего дальше не происходит
а стоит его вручную написать как переменную, то сразу все шоколадно..

я уж и code = code.toString() и много другой бессмысленной ереси перепробовал,
короче решил я забить на эту авторизацию) прибила она меня окончательно

caseyryan
12.05.2015, 19:15
напишите на as3. Там точно все работает