@GDApsy
программирование на python;linux

Ulogin: в чем причины ошибки 'invalid token'?

Код самой панели Ulogin без изменений был взят из конструктора и встроен в страницу без изменений:
<script src="//ulogin.ru/js/ulogin.js"></script>
<div id="uLogin"
 data-ulogin="display=panel;fields=first_name,last_name;providers=vkontakte,facebook,twitter,livejournal,google,openid;hidden=other;redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Fauth%2Fsocauth"></div>


В обработчике получаю токен пользователя, а также беру значение переменной
HTTP_HOST и передаю их в объект, работающий с ulogin:
if request.method == 'POST':
		 server = request.environ['HTTP_HOST']
		 token = request.form['token']
		 ulmanager = ulogin.UloginManager(token,server)


В объекте же осуществляется запрос данных:

self.token=token 
self.server = server
url = 'http://ulogin.ru/token.php'
data = urllib.urlencode({'token': self.token, 'host': self.server})
self.ulogin = urllib2.Request(url,data)
self.ulogin = urllib2.urlopen(self.ulogin)
self.ulogin = self.ulogin.read()


Сервер отдает ответом:
{u'error': u'invalid token'}

Код, который дается как пример в справке:

$s = file_get_contents('http://ulogin.ru/token.php?token=' . $_POST['token'] . '&host=' . $_SERVER['HTTP_HOST']);
                    $user = json_decode($s, true);
                    //$user['network'] - соц. сеть, через которую авторизовался пользователь
                    //$user['identity'] - уникальная строка определяющая конкретного пользователя соц. сети
                    //$user['first_name'] - имя пользователя
                    //$user['last_name'] - фамилия пользователя
  • Вопрос задан
  • 4390 просмотров
Решения вопроса 1
@GDApsy Автор вопроса
программирование на python;linux
Источником проблемы явилось то что значение токена и сервера требуется передать как методом GET, а тем временем self.ulogin = urllib2.Request(url,data) предполагает что будет сформирован POST запрос, а поэтому данные, хранящиеся в переменной дата необходимо добавить к url вручную,например так:
data = urllib.urlencode({'token': self.token, 'host': self.server})
ulogin = urllib2.urlopen(url+'?'+data)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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