RoR 推特 API oAuth:"Could not authenticate you."
RoR Twitter API oAuth : "Could not authenticate you."
我尝试将我的应用程序连接到 Twitter API。
我不确定,但我认为我的问题来自 oauth_signature。
所以我阅读了这份文档:https://dev.twitter.com/oauth/overview/creating-signatures
我想我已经按照他们说的去做了,但是没有用,我也不知道为什么。
这是我的代码:
def build_url_api(parameters, token, account, secret_token)
consumer_key = 'xxx'
secret_consumer_key = 'xxx'
oauth_consumer_key = consumer_key
oauth_signature_method = "HMAC-SHA1"
oauth_timestamp = Time.zone.now.to_i.to_s
oauth_nonce = Digest::SHA256.hexdigest(oauth_timestamp)[0..16]
oauth_version = "1.0"
oauth_token = token
url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'
parameters = 'oauth_consumer_key=' +
oauth_consumer_key +
'&oauth_nonce=' +
oauth_nonce +
'&oauth_signature_method=' +
oauth_signature_method +
'&oauth_timestamp=' +
oauth_timestamp +
'&oauth_token=' +
oauth_token +
'&oauth_version=' +
oauth_version
base_string = 'GET&' + CGI.escape(url) + '&' + CGI.escape(parameters)
secret_key = secret_consumer_key + '&' +secret_token
oauth_signature = CGI.escape(Base64.encode64("#{OpenSSL::HMAC.digest('sha1',secret_key, base_string)}").chomp)
url = url + '?' + parameters + '&oauth_signature=' + oauth_signature
end
我用我的代码创建了一个 URL 的例子:
提前感谢任何能给我出主意的人!
PS :当然,我在这里将 consumer_key 和 secret_key 替换为 'xxx'
真可惜我找到了解决方案:
我刚有一个旧的 consumer_key。
我这里的代码示例运行良好。
我尝试将我的应用程序连接到 Twitter API。 我不确定,但我认为我的问题来自 oauth_signature。 所以我阅读了这份文档:https://dev.twitter.com/oauth/overview/creating-signatures
我想我已经按照他们说的去做了,但是没有用,我也不知道为什么。
这是我的代码:
def build_url_api(parameters, token, account, secret_token)
consumer_key = 'xxx'
secret_consumer_key = 'xxx'
oauth_consumer_key = consumer_key
oauth_signature_method = "HMAC-SHA1"
oauth_timestamp = Time.zone.now.to_i.to_s
oauth_nonce = Digest::SHA256.hexdigest(oauth_timestamp)[0..16]
oauth_version = "1.0"
oauth_token = token
url = 'https://api.twitter.com/1.1/statuses/user_timeline.json'
parameters = 'oauth_consumer_key=' +
oauth_consumer_key +
'&oauth_nonce=' +
oauth_nonce +
'&oauth_signature_method=' +
oauth_signature_method +
'&oauth_timestamp=' +
oauth_timestamp +
'&oauth_token=' +
oauth_token +
'&oauth_version=' +
oauth_version
base_string = 'GET&' + CGI.escape(url) + '&' + CGI.escape(parameters)
secret_key = secret_consumer_key + '&' +secret_token
oauth_signature = CGI.escape(Base64.encode64("#{OpenSSL::HMAC.digest('sha1',secret_key, base_string)}").chomp)
url = url + '?' + parameters + '&oauth_signature=' + oauth_signature
end
我用我的代码创建了一个 URL 的例子:
提前感谢任何能给我出主意的人!
PS :当然,我在这里将 consumer_key 和 secret_key 替换为 'xxx'
真可惜我找到了解决方案:
我刚有一个旧的 consumer_key。
我这里的代码示例运行良好。