我一直在尝试使用最新的Yahoo Contacts API Ruby OAuth的版本,但我不确定我是否会被挂断 授权过程的最后阶段,或API中的某些内容。 我希望你能帮我解决这个问题。
使用当前版本的OAuth,我显然可以收到一个 工作访问密钥。我有一个请求的控制器 request_token就像这样:
@consumer = OAuth::Consumer.new(api_key, shared_secret,
{
:site => 'https://api.login.yahoo.com',
:request_token_path => '/oauth/v2/get_request_token',
:access_token_path => '/oauth/v2/get_token',
:authorize_path => '/oauth/v2/request_auth',
:signature_method => 'HMAC-SHA1',
:oauth_version => '1.0'
})
@request_token = @consumer.get_request_token(
{:oauth_callback => 'http://contactmonkey.com/cards/yahoo_auth?redir...@card.short_link}
)
我从中获得了一个明显好的请求令牌,然后继续 新控制器方法中的授权:
@access_token =
@request_token.get_access_token(:oauth_verifier=>params[:oauth_verifier])
我也从中获得了一个明显优秀的访问令牌。这只是 当我开始使用API时,事情会变成梨形。
# make initial contact so we get a contact ID
yahoo_guid = @access_token.params[:xoauth_yahoo_guid]
@response = @access_token.request(:post, 'http://social.yahooapis.com/v1/user/' + yahoo_guid + '/contacts')
当我检查反应机构时,我明白了:
<?xml version=\"1.0\" encoding=\"utf-8\"?><error xmlns=\"http://social.yahooapis.com/v1/schema.rng\" xmlns:yahoo=\"http://www.yahooapis.com/v1/base.rng\" yahoo:uri=\"http://www.yahooapis.com/v1/errors/415\" yahoo:lang=\"en-US\"><description>Requested representation not available for the resource</description><detail>Invalid media type</detail></error>
我在许多地方都看到过这种情况之间存在一些不相容之处 Yahoo OAuth实现和Ruby OAuth gem。但我不确定是否 该信息已过期(我使用的是当前的0.4.4)。
感谢您提供的任何帮助! 亚伦。
更新:解决方案是正确格式化标题:
@response = @access_token.request(:post, 'http://social.yahooapis.com/v1/user/' + yahoo_guid + '/contacts', entry, { 'Content-Type' => 'application/xml' } )
请注意“content-type”标头。我试过“text / xml”,但这不起作用。这样做。感谢Dan K.的帮助!
答案 0 :(得分:1)
您正在收回HTTP 415,这意味着服务器无法以您请求的格式回复您的请求。 Yahoo API似乎支持两种指定所需格式的方法。来自the docs,它们是:
1。)使用您请求的内容类型(XML或JSON)设置“接受”HTTP标头。
2.。)将?format = xml或?format = json附加到您的查询字符串。
答案 1 :(得分:0)
我也很难与yahoo oauth和yahoo api请求“HAMC-SHA1”。在经历了所有困难之后,我在这里创建了一个很长的文档:
https://docs.google.com/document/d/1SdGSfakQM3ZuiqJK7keXhOfh6310-z_h0THl1_Jswxk/pub
因为太长了以至于我无法在这里写下所有内容。我希望它可以帮助其他人。