3

私はREST APIを介してそれをやっています。2 つの質問

1) 既存のデータを Quickblox カスタム オブジェクトにプッシュしたい。必要な REST 呼び出しの数は? (コンピューターのセキュリティに関する全体的な状況については、はっきりとはわかりません。) 最初に (a) セッション トークンを取得しますか。そして、Create new record hereに従ってください。

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}&timestamp={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()

問題を引き起こしているのは、署名の生成方法だと思いますか?

4

2 に答える 2

2

これが私の質問に対する答えです。タイムスタンプは整数のみにする必要があり、hamc は秘密鍵を使用する必要があり、セッションの代わりにhttps://api.quickblox.com/auth.jsonを使用する必要があることがわかりました。また、署名に適切なエンコーディングを使用していませんでした。

于 2013-08-01T05:53:30.393 に答える