我在我的某个模型中实现了Cloudinary类型,但在尝试将其保存到Cloudinary时会收到此错误:
Image upload failed - Invalid Signature
ea4401c2ebf292208d28f9dc88c5ff1c4e73761d.
String to sign - 'tags=trial-images_image,trial-
images_image_55ba9896c6d05b8704802f0a,dev×tamp=1438292137'.
我不知道该怎么办,有人经历过这个吗?
答案 0 :(得分:1)
您应该确保正确计算签名。具体来说,您应该同时签署标签和时间戳(当然包括api_secret
)。
答案 1 :(得分:0)
我有完全相同的问题。 请仔细检查您是否正确设置了配置参数(云名称,api密钥,api secret)。可以通过访问cloudinary帐户上的管理控制台找到它们。 (仪表板>帐户详细信息)。
根据他们的文档: (http://cloudinary.com/documentation/rails_additional_topics#configuration_options)
配置参数可以使用位于Rails项目的config目录下的cloudinary.yml配置文件进行全局设置。等...
以下是cloudinary.yml文件的示例:
production: cloud_name: "sample" api_key: "874837483274837" api_secret: "a676b67565c6767a6767d6767f676fe1"
等...
...另一个配置选项是使用Rails初始化程序文件。您可以将名为cloudinary.rb的文件放在Rails项目的/ config / initializers文件夹中。这是一个初始化代码示例:
Cloudinary.config do |config| config.cloud_name = 'sample' config.api_key = '874837483274837' config.api_secret = 'a676b67565c6767a6767d6767f676fe1' config.cdn_subdomain = true end
最后一个配置选项允许您通过定义CLOUDINARY_URL环境变量来动态配置Cloudinary库。配置URL可在您帐户的管理控制台的仪表板中找到。通过PaaS插件(例如,Heroku)使用Cloudinary时,会在部署环境中自动定义此环境变量。这是一个示例值:
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 secret)被设置为环境变量(CLOUD_NAME
,API_KEY
,API_SECRET
),以防止它们暴露在外代码是公开共享的。 (您不想对敏感信息进行硬编码)
您可以通过编辑.bash_profile
文件来设置bash中的环境变量,该文件位于主目录中(并隐藏):
(.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
最后,如果您计划将应用程序部署到heroku,您可能还希望通过在终端中键入以下命令来添加cloudinary作为插件,这对于入门选项是免费的:
heroku addons:create cloudinary:starter
将所有这些放在一起可能会解决您的问题。
最后但并非最不重要的是,我发现以下博客文章非常有用:
http://www.uberobert.com/rails_cloudinary_carrierwave/
它解释了如何使用cloudinary和carrierwave上传和操作应用程序中的图像。
希望它有所帮助!