Ruby on rails Yelp Place API returning“;“无效签名”;仅来自EC2上的Nginx的错误

Ruby on rails Yelp Place API returning“;“无效签名”;仅来自EC2上的Nginx的错误,ruby-on-rails,nginx,oauth,amazon-ec2,yelp,Ruby On Rails,Nginx,Oauth,Amazon Ec2,Yelp,问题:我从Yelp API中得到一个“无效签名”错误,仅来自生产(在AWS的nginx服务器上运行)当我在本地主机上运行时:3000,没有签名错误,一切正常 我正在rails中使用YelpGem。下面是ruby中的一些代码: $client = Yelp::Client.new({ consumer_key: $SL_CONSUMER_KEY, consumer_secret: $SL_CONSUMER_SECRET, token: $SL_TOKEN, toke

问题:我从Yelp API中得到一个“无效签名”错误,仅来自生产(在AWS的nginx服务器上运行)当我在本地主机上运行时:3000,没有签名错误,一切正常

我正在rails中使用YelpGem。下面是ruby中的一些代码:

$client = Yelp::Client.new({
    consumer_key: $SL_CONSUMER_KEY,
    consumer_secret: $SL_CONSUMER_SECRET,
    token: $SL_TOKEN,
    token_secret: $SL_TOKEN_SECRET
})

begin
    $client.search("Los Angeles")
rescue => error
    puts error.message
    puts error.inspect
end
错误。打印出消息:“签名无效”

错误。检查打印输出:

当我在rails的Webrick服务器上本地运行时,一切都正常,但当我在生产环境中运行时,会出现“无效签名”错误


有人见过这个吗?我看过一些相关的帖子,但这似乎有所不同。谢谢

这可能不适用于大多数人,但它可能会帮助某些人,如下所示:

我的“时间”在EC2实例上失效。例如,在ruby中,Time.now没有打印实际时间。(我想大约几分钟后就结束了)

无论如何,YelpAPI在发送请求时需要oauth_时间戳。当然,当时我的要求是在b/c超时。

我是怎么发现这个错误的

我只是用oauth、token、oauth_时间戳等(更多)作为查询参数在浏览器上ping了URL。浏览器以JSON的形式给出错误响应,它说我的请求超时了。当您使用RubyYelp客户机并在代码中捕获异常时,它不会在终端中发出错误响应,因此要找到错误的确切根源有点困难

我是如何解决的:

我按照此处的说明重新校准了ec2实例中的时间:


问题解决了。和平。

无效签名
Yelp API中出现错误有两个原因。
首先,您的四个密钥之一,即
消费者密钥
消费者密钥
令牌
令牌密钥
无效。其次,传递给
Yelp API
函数的
参数要么无效,要么为零。

请分享您的错误消息(无效签名)。@JarachanthanRatnakumar我用一些打印语句和我得到的内容编辑了上面的帖子。我今天也遇到了同样的问题,但我使用的是Yelp Python API。不知怎的,我无意中发现了你的问题。然后,我明白了真正的原因。改变了时间,效果很好!!谢谢!但我在这里使用了时间变化: