2013-08-04 4 views
3

При получении сеанса я получаю «непредвиденную ошибку».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 + "&timestamp=" + 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": ["Неожиданная подпись"]}}

Что-то пошло не так?

ответ

0

Вот мой пример:

curl -X POST -H "Content-Type: application/json" -H "QuickBlox-REST-API-Version: 0.1.0" -d '{"application_id":"92","auth_key":"wJHdOcQSxXQGWx5","nonce":"315","timestamp":"1375624737","signature":"f36336b8bc8449b8252edbc0ee441cdb5856112c"}' http://api.quickblox.com/session.json 

Результат:

{"session":{"application_id":92,"created_at":"2013-08-04T13:59:50Z","device_id":null,"id":3553701,"nonce":315,"token":"1d423b6633e2fc82f81d88b65f3e26198853c84c","ts":1375624737,"updated_at":"2013-08-04T13:59:50Z","user_id":null}} 

Вы должны проверить код, который генерирует подпись

+0

Если я получаю маркер обратно, это не означает, что подпись был сгенерирован правильно? Раньше сервер сообщал мне что-то не так с подписью (я забыл точную формулировку). – huggie

+0

Я вижу, что код Python, который генерирует подпись, не равен коду в ссылке –

+0

Поскольку код в ссылке не запускается. Им не хватает импорта, и когда он импортируется, этот hmac() Alex просто не работает. Но я снова посмотрю. – huggie

Смежные вопросы