我是通过restapi实现的。两个问题
1)我想将一些现有数据推送到Quickblox自定义对象。我需要多少个休息电话?(我不太清楚涉及计算机安全的整个情况。)是先(a)获得会话令牌吗。然后按照createnewrecordhere创建新记录?在
2)我试图获取一个会话令牌,但是我得到了{"errors":{"base":["Unexpected signature"]}}
作为响应。以下是生成nonce、签名和获取会话令牌的代码:
# Of course these are not really 0, x, and y's.
appId = '0000'
authKey = 'XXXXXXXXXXX'
authSecret = 'YYYYYYYYYYYYYY'
def getNonce():
import random
return random.random()
def createSignature(nonce):
import hashlib
import hmac
import binascii
import time
stringForSignature = 'application_id={id}&auth_key={auth_key}&nonce={nonce}×tamp={timestamp}'.format(id=appId,
auth_key=authKey, nonce=nonce, timestamp=time.time())
hmacObj = hmac.new(authKey, stringForSignature, hashlib.sha1)
return binascii.b2a_base64(hmacObj.digest())[:-1] # -1 to get rid of \n
def getSessionToken():
import time
epoch = "%s" % int(time.time())
nonce = getNonce()
params = {'application_id': appId,
'auth_key': authKey,
'timestamp': epoch,
'nonce': nonce,
'signature': createSignature(nonce)}
jsonData = json.dumps(params)
httpHeaders = {'Content-Type': 'application/json',
'QuickBlox-REST-API-Version': '0.1.0'}
r = requests.post('https://api.quickblox.com/session.json', data=jsonData, headers = httpHeaders)
print 'status code:', r.status_code
responseJson = r.text
print responseJson
response = json.loads(responseJson)
getSessionToken()
我想是签名的生成方式导致了这个问题?在
Here是我问题的答案。结果表明,时间戳应该是整数,hamc应该使用密钥,并且应该使用https://api.quickblox.com/auth.json而不是session。而且我的签名没有使用正确的编码。在
我在您的代码中发现以下问题:
我建议您使用下面的代码,其中修改了上面的错误。 因此,您将获得以下身份验证: -请求 -用户授权请求- -设备参数请求
相关问题 更多 >
编程相关推荐