从雅虎获取 Oauth2 令牌时出错:OAuth2::Error invalid_request: {"error":"invalid_request"}
error fetching Oauth2 token from yahoo: OAuth2::Error invalid_request: {"error":"invalid_request"}
我有一个简单的问题让我卡住了。我一直在关注这个雅虎文档 Yahoo OAuth 2.0 Guide . I have been able to generate authorization URL and even get the authorization code.(that is upto Step 3).
但现在我卡在了第 4 步:Exchange authorization code for Access Token. I am also using this Whosebug question Yahoo API with Ruby on Rails and OAUTH2。这是我的代码(我正在使用 sinatra):
get '/yahoo/contacts/oauth2callback' do
client = OAuth2::Client.new($consumer_id, $consumer_secret, site: $yahoo_base_url, authorize_url: '/oauth2/request_auth', token_url: '/oauth2/get_token')
code = params[:code] if params[:code]
puts "Code: #{code}"
# token = client.auth_code.get_token(code, redirect_uri: $yahoo_redirect_url, headers: { "Authorization" => Basic })
token = client.auth_code.get_token(code, redirect_uri: $yahoo_redirect_url)
puts "THIS IS THE NEW TOKEN NOW: #{token}"
end
使用的变量包括:
# for yahoo application
$consumer_id = "dj0yJmk9Q1RKU2x2NTY3WWVxJmQ9WVdrOU1YWnRUV2cyTXpBbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1fth--"
$consumer_secret = "my_secret"
$yahoo_redirect_url = "http://localhost:4567/yahoo/contacts/oauth2callback"
什么导致错误的原因是什么?因为错误来源是这一行。
token = client.auth_code.get_token(code, redirect_uri: $yahoo_redirect_url)
我做错了什么?
更新:我写错了标题,好像很多人看不出来。
错误是
OAuth2::Error invalid_request: {“error”:“invalid_request”}
file: client.rb location: request line: 113
返回的 url 看起来像这样:
http://localhost:4567/yahoo/contacts/oauth2callback?code=bck5tkm.
提取的代码是 bck5tkm
您使用的代码可能已过期或已使用(只能使用一次)。或者您在 POST 请求的 HTTP 基本授权 header 中提供了无效凭据。
假设您使用 intridea OAuth 2.0 客户端 (https://github.com/intridea/oauth2),您可能会遇到一个错误:
https://github.com/intridea/oauth2/pull/192
表示 Yahoo 拒绝在请求正文中允许客户端凭据。拉取请求尚未合并,因此您需要将其应用到您自己的代码中(或找到另一个有效的 gem)。
我有一个简单的问题让我卡住了。我一直在关注这个雅虎文档 Yahoo OAuth 2.0 Guide . I have been able to generate authorization URL and even get the authorization code.(that is upto Step 3).
但现在我卡在了第 4 步:Exchange authorization code for Access Token. I am also using this Whosebug question Yahoo API with Ruby on Rails and OAUTH2。这是我的代码(我正在使用 sinatra):
get '/yahoo/contacts/oauth2callback' do
client = OAuth2::Client.new($consumer_id, $consumer_secret, site: $yahoo_base_url, authorize_url: '/oauth2/request_auth', token_url: '/oauth2/get_token')
code = params[:code] if params[:code]
puts "Code: #{code}"
# token = client.auth_code.get_token(code, redirect_uri: $yahoo_redirect_url, headers: { "Authorization" => Basic })
token = client.auth_code.get_token(code, redirect_uri: $yahoo_redirect_url)
puts "THIS IS THE NEW TOKEN NOW: #{token}"
end
使用的变量包括:
# for yahoo application
$consumer_id = "dj0yJmk9Q1RKU2x2NTY3WWVxJmQ9WVdrOU1YWnRUV2cyTXpBbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD1fth--"
$consumer_secret = "my_secret"
$yahoo_redirect_url = "http://localhost:4567/yahoo/contacts/oauth2callback"
什么导致错误的原因是什么?因为错误来源是这一行。
token = client.auth_code.get_token(code, redirect_uri: $yahoo_redirect_url)
我做错了什么?
更新:我写错了标题,好像很多人看不出来。 错误是
OAuth2::Error invalid_request: {“error”:“invalid_request”}
file: client.rb location: request line: 113
返回的 url 看起来像这样:
http://localhost:4567/yahoo/contacts/oauth2callback?code=bck5tkm.
提取的代码是 bck5tkm
您使用的代码可能已过期或已使用(只能使用一次)。或者您在 POST 请求的 HTTP 基本授权 header 中提供了无效凭据。
假设您使用 intridea OAuth 2.0 客户端 (https://github.com/intridea/oauth2),您可能会遇到一个错误:
https://github.com/intridea/oauth2/pull/192
表示 Yahoo 拒绝在请求正文中允许客户端凭据。拉取请求尚未合并,因此您需要将其应用到您自己的代码中(或找到另一个有效的 gem)。