これは簡単なように思えますが、1時間グーグルした後、私はこれを理解できません.
Amazon S3 の「ポリシー ドキュメント」を JSON としてサーバーに投稿しています。JSONをそのままエンコードする必要がありますが、Railsは「params」に何かを追加しているため、エンコードする必要があるJSONが乱雑になっています。
ここに私が持っているものがあります:
class Api::Amazons3Controller < Api::BaseController
def sign_policy
policy_document = params.except(:action, :controller)
encoded_policy_document = Base64.encode64(policy_document.to_json).gsub(/\n|\r/, '')
signature = Base64.encode64(
OpenSSL::HMAC.digest(
OpenSSL::Digest::Digest.new('sha1'),
ENV['AWS_SECRET_ACCESS_KEY'],
policy_document)
).gsub(/\n/, '')
response = { policy: policy_document, signature: signature }
render json: response
end
end
params.except(:action, :controller)でパラメーターを「クリーンアップ」しようとしていますが、policy_document.to_jsonは JSON の周りに「amazons3」(コントローラー名) というルート ノートを追加しますが、これは望ましくありません。 . リクエストから純粋なjsonをエンコードするだけです。
どんな助けでも大歓迎です!