2016-05-12 33 views
0

Ich versuche QuickBlox-Sitzung von Rest-API mit Ruby on Rails zu erstellen. Meine aktuelle Implementierung:QuickBlox Sitzung erstellen: Unerwartete Signatur in Rails App

def qb_signin_params 
    timestamp = Time.now.in_time_zone('UTC').to_i 
    nonce = rand.to_s[2..6] 
    signature_string = "application_id=#{QuickBlox_Application_Id}&auth_key=#{QUICKBLOX_Authorization_KEY}&nonce=#{nonce}&timestamp=#{timestamp}" 
    digest = OpenSSL::Digest.new('sha1') 
    signature = OpenSSL::HMAC.hexdigest(digest, signature_string, QUICKBLOX_Authorization_SECRET) 

    params = Hash.new 
    params['application_id'] = QuickBlox_Application_Id 
    params['auth_key'] = QUICKBLOX_Authorization_KEY 
    params['timestamp'] = timestamp 
    params['nonce'] = nonce 
    params['signature'] = signature 

    params 
end 

Returns folgenden Fehler:

unexpected token at '<?xml version="1.0" encoding="UTF-8"?> 
<errors> 
    <error>Unexpected signature</error> 
</errors> 

Ich habe durch mehrere Orte gesucht, konnte aber nie die richtige Signatur Generation für Ruby finden. Bitte helfen Sie.

Antwort

1

Überprüfen Sie diese quickblox_api gem. Es funktionierte gut für mich ...

Ich hatte das gleiche Problem, und beim Betrachten, was dort getan wurde, das war fast genau das, was Sie (und ich) taten ... abgesehen von der Tatsache, dass die Körper für die hmac_sha wurde alphabetisch sortiert, wie auf der quickblox documentation, die ich unten zitieren:

Request body is formed as the sorted (sorting alphabetically, as symbols, not as bytes) by increase the string array 'parameter=value', separated with the symbol "&"