keystonejs облачная неверная ошибка подписи

Я реализовал тип Cloudinary в одной из своих моделей, но получаю эту ошибку, когда пытаюсь сохранить ее в Cloudinary:

Image upload failed - Invalid Signature              
ea4401c2ebf292208d28f9dc88c5ff1c4e73761d. 
String to sign - 'tags=trial-images_image,trial-    
images_image_55ba9896c6d05b8704802f0a,dev&timestamp=1438292137'.

Я не знаю, что с этим делать, кто-нибудь сталкивался с этим?


person Jim Bob    schedule 30.07.2015    source источник


Ответы (2)


Вы должны убедиться, что правильно рассчитали подпись. В частности, вы должны подписать как теги, так и временную метку (конечно, включая api_secret).

person Itay Taragano    schedule 12.08.2015

У меня была точно такая же проблема. Пожалуйста, дважды проверьте правильность настройки параметров конфигурации (имя облака, ключ API, секрет API). Их можно найти, зайдя в консоль управления вашей облачной учетной записи. (Панель управления > Сведения об учетной записи).

Согласно их документации: (http://cloudinary.com/documentation/rails_additional_topics#configuration_options)

Параметры конфигурации можно задать глобально с помощью файла конфигурации cloudinary.yml, расположенного в каталоге config вашего проекта Rails. и т.д...

Вот пример файла cloudinary.yml:

production:
  cloud_name: "sample"
  api_key: "874837483274837"
  api_secret: "a676b67565c6767a6767d6767f676fe1"

и т.д...

... Другой вариант конфигурации - использовать файл инициализатора Rails. Вы можете поместить файл с именем cloudinary.rb в папку /config/initializers вашего проекта Rails. Вот пример кода инициализатора:

Cloudinary.config do |config|
   config.cloud_name = 'sample'
   config.api_key = '874837483274837'
   config.api_secret = 'a676b67565c6767a6767d6767f676fe1'
   config.cdn_subdomain = true 
 end

Последний параметр конфигурации позволяет динамически настраивать библиотеку Cloudinary, определяя переменную среды CLOUDINARY_URL. URL-адрес конфигурации доступен в панели управления Консоли управления вашей учетной записи. При использовании Cloudinary через надстройку PaaS (например, Heroku) эта переменная среды автоматически определяется в вашей среде развертывания. Вот примерное значение:

CLOUDINARY_URL=cloudinary://874837483274837:a676b67565c6767a6767d6767f676fe1@sample

Как я на самом деле решил проблему

Я решил проблему, приняв (и немного изменив) первый вариант, который заключается в создании файла cloudinary.yml в каталоге config и написании следующего кода:

(config/cloudinary.yml)

development:
  cloud_name: <%= ENV["CLOUD_NAME"] %>
  api_key: <%= ENV["API_KEY"] %>
  api_secret: <%= ENV["API_SECRET"] %>

test:
  cloud_name: <%= ENV["CLOUD_NAME"] %>
  api_key: <%= ENV["API_KEY"] %>
  api_secret: <%= ENV["API_SECRET"] %>

production:
  cloud_name: <%= ENV["CLOUD_NAME"] %>
  api_key: <%= ENV["API_KEY"] %>
  api_secret: <%= ENV["API_SECRET"] %> 

Обратите внимание, что параметры конфигурации (имя облака, ключ API, секрет API) задаются как переменные среды (CLOUD_NAME, API_KEY, API_SECRET), чтобы предотвратить их раскрытие при общедоступном коде. (Вы не хотите жестко кодировать конфиденциальную информацию)

Вы можете установить переменные среды в bash, отредактировав файл .bash_profile, который находится (и скрыт) в домашнем каталоге:

(.bash_profile)
.....
export CLOUD_NAME="your cloud name"
export API_KEY="your api key"
export API_SECRET="your api secret"
.....

Вы можете проверить, правильно ли установлены эти переменные окружения, набрав, например, echo $CLOUD_NAME в своем терминале (возможно, вам придется выйти из терминала и перезапустить его). В случае успеха вывод будет выглядеть примерно так:

echo $CLOUD_NAME 
> your cloud name

Наконец, если вы планируете развернуть свое приложение на героку, вы также можете добавить cloudinary в качестве надстройки, которая является бесплатной для стартового варианта, введя следующую команду в терминале:

heroku addons:create cloudinary:starter

Соединение всего этого вместе может решить вашу проблему.

И последнее, но не менее важное: я нашел следующий пост в блоге весьма полезным:

http://www.uberobert.com/rails_cloudinary_carrierwave/

В нем объясняется, как вы можете использовать Cloudinary и CarrierWave для загрузки и управления изображениями в вашем приложении.

Надеюсь, поможет!

person Taiga    schedule 26.04.2016