1

Adobe の Creative SDK を Ruby on Rails アプリに実装しようとしています。

https://creativesdk.adobe.com/docs/web/#/articles/highresolution/index.html

高解像度 API への必要なアクセス権があります。

彼らが持っている例はPHPとNode.jsのもので、私はPHPに基づいてRuby on Railsバージョンを書こうとしています。「authenticationURL」を適切に呼び出しているという点で、すべての設定が完了していますが、「無効な authenticationURL 応答です。応答のフォーマットを確認してください」というメッセージが表示されます。

私はこのレベルでのプログラミングは初めてで、基本的にここで PHP と Ruby に関するいくつかの質問やhttp://www.phptoruby.com/などのサイトを参照して、これを理解しようとしました。

PHPは次のとおりです。

<!-- /getAuth -->

<?php
$apiKey = "apikey";
$apiSecret = "apisecret";
$salt = rand(0,1000);
$time = time();
$sig = sha1($apiKey . $apiSecret . $time . $salt);

$authObj = array(
    "apiKey" => $apiKey,
    "salt" => $salt,
    "timestamp" => $time,
    "encryptionMethod" => 'sha1',
    "signature" => $sig
);

echo json_encode($authObj);

?>

現時点で私が持っているものは次のとおりです(apikeyとapisecretが正しく入力されています):

require 'time'
require 'json'
require 'digest/sha1'

def get_auth
 apiKey = 'apikey'
 apiSecret = 'apisecret'
 salt = "#{0 + rand(1000)}"
 time = "#{Time.now.to_i}"
 sig = Digest::SHA1.hexdigest('apiKey' + 'apiSecret' + 'time' + 'salt')


 authObj = { :apiKey => 'apiKey',
                 :salt => 'salt',
                 :timestamp => 'time',
                 :encryptionMethod => 'sha1',
                 :signature => 'sig' }

 print 'authObj'.to_json
 render :fxb
end

ここでの使用printが正しいかどうかわかりませんか?または、私の問題が構文の問題である場合...またはまったく別のものです。

4

4 に答える 4

1

変更してみる

 sig = Digest::SHA1.hexdigest('apiKey' + 'apiSecret' + 'time' + 'salt')

 sig = Digest::SHA1.hexdigest(apiKey + apiSecret + time + salt)

一重引用符を使用するapiKeyと、ハッシュされる値として文字列自体が使用され、その値は使用されません。

また、一重引用符を削除するには、以下も変更する必要があります。

authObj = { :apiKey => 'apiKey',
                 :salt => 'salt',
                 :timestamp => 'time',
                 :encryptionMethod => 'sha1',
                 :signature => 'sig' }

 print 'authObj'.to_json

authObj = { :apiKey => apiKey,
                 :salt => salt,
                 :timestamp => time,
                 :encryptionMethod => sha1,
                 :signature => sig }

 print authObj.to_json
于 2016-07-14T14:42:14.120 に答える
0

まだ問題に直面している人のために、古い投稿に返信します。解決策が機能する可能性があります(少なくともasp.netの場合)。同じエラーが発生していましたが、応答のコンテンツ タイプを「application/json; charset=utf-8」に設定すると解決しました。それがなければ、鳥小屋は認証jsonをオブジェクトではなく文字列として読み取っていたため、それをタイムスタンプ、署名などに解析できませんでした

Response.ContentType = "application/json; charset=utf-8";

それが役立つことを願っています。

于 2017-01-13T04:03:30.340 に答える
0

これをコントローラー アクションとして追加します。

  def auth_aviary
    timestamp = Time.now.to_i.to_s
    salt = rand(1000).to_s
    sig = Digest::SHA1.hexdigest(
            Conf.aviary_api_key + 
            Conf.aviary_api_secret + 
            timestamp + 
            salt
          )
    render json: {
      "apiKey" => Conf.aviary_api_key,
      "salt" => salt,
      "timestamp" => timestamp,
      "encryptionMethod" => 'sha1',
      "signature" => sig
    }
  end
于 2016-12-02T15:57:03.837 に答える