Quickblox getting a session receives “Unexpected s

2019-07-06 05:54发布

问题:

When getting a session, I get an "unexpected error".

Here is my code to get the signature (modified from this since that code is without some imports and notably hmac.new() is used instead of hmac() since that code doesn't work for me.

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

The output:

<?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'

Next I use curl to attempt to create a session:

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

I get this as a result: {"errors":{"base":["Unexpected signature"]}}

Something went wrong?

回答1:

Here is my example:

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

Result:

{"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}}

You should check code which generates your signature