При получении сеанса я получаю «непредвиденную ошибку».Quickblox, получающий сеанс, получает сообщение об ошибке «Неожиданная подпись»
Вот мой код, чтобы получить подпись (модифицированную из this так, что код без некоторого импорта и, в частности hmac.new() используется вместо HMAC(), так что код не работает для меня.
import sys
import json
import time
import random
import hashlib
import hmac
import urllib
import httplib
application_id = '3427'
auth_key = 'PLYHedAmxwdvt59'
auth_secret = '*some secret key*'
nonce = str(random.randint(1, 10000))
timestamp = str(int(time.time()))
signature_raw_body = ("application_id=" + application_id + "&auth_key=" + auth_key +
"&nonce=" + nonce + "×tamp=" + timestamp)
signature = hmac.new(auth_secret, signature_raw_body, hashlib.sha1).hexdigest()
params = urllib.urlencode({'application_id': application_id,
'auth_key': auth_key,
'timestamp': timestamp, 'nonce' : nonce,
'signature' : signature})
conn = httplib.HTTPSConnection("api.quickblox.com")
conn.request("POST", "/session", params, {})
response = conn.getresponse()
print response.read()
print "signature = '%s'" % signature
выход:
<?xml version="1.0" encoding="UTF-8"?>
<session>
<application-id type="integer">3427</application-id>
<created-at type="datetime">2013-08-04T12:19:10Z</created-at>
<device-id type="integer" nil="true"/>
<id type="integer">3552056</id>
<nonce type="integer">5855</nonce>
<token>686840081c18c7dd0e0a779c233e0d9605bcb567</token>
<ts type="integer">1375618748</ts>
<updated-at type="datetime">2013-08-04T12:19:10Z</updated-at>
<user-id type="integer" nil="true"/>
</session>
signature = 'f08b68b645184619bbe59bac217506e66a840425'
Далее я использую локон, чтобы попытаться создать сеанс:
curl -X POST -H "Content-Type: application/json" -H "QuickBlox-REST-API-Version: 0.1.0" -d '{"application_id":"3427","auth_key":"PLYHedAmxwdvt59","nonce":"33432","timestamp":"1375619372","signature":"f08b68b645184619bbe59bac217506e66a840425"}' http://api.quickblox.com/session.json
Я получаю это как результат: {"errors": {"base": ["Неожиданная подпись"]}}
Что-то пошло не так?
Если я получаю маркер обратно, это не означает, что подпись был сгенерирован правильно? Раньше сервер сообщал мне что-то не так с подписью (я забыл точную формулировку). – huggie
Я вижу, что код Python, который генерирует подпись, не равен коду в ссылке –
Поскольку код в ссылке не запускается. Им не хватает импорта, и когда он импортируется, этот hmac() Alex просто не работает. Но я снова посмотрю. – huggie