2016-05-12 11 views
0

Ruby on Railsを使用してRest APIからQuickBloxセッションを作成しようとしています。私の現在の実装:エラー以下QuickBloxセッションの作成:Railsアプリケーションでの予期しない署名

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 

戻り値:

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

私はいくつかの場所によって検索しましたが、Rubyのための正しい署名生成を見つけることができませんでした。助けてください。

答えて

1

これをチェックアウトするとquickblox_api gemです。それは私のためにうまくいった...

私はこの同じ問題を抱えていて、そこで行われたことを見て、あなたと(私が)行っていたことをほぼ正確に見ていました...

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 "&"

で説明されているとおり、 hmac_shaの本文はアルファベット順にソートされています。
関連する問題