我可以通过reddit使用OAuth2和Rails登录我的localhost网站,但当我尝试制作后续(必需的)POST请求以获取进行实际API调用所需的访问令牌时,我得到了回复' invalid_grant '。 OAuth reddit文档(here)表示invalid_grant表示"代码已过期或已被使用"
但是我确定它没有被重复使用,我已经移动了代码,以确保它无法运行两次并监控控制台。更改POST请求中的其他值会产生401,因此请求本身就可以了(我认为)。
omniauth_callbacks_controller.rb
@result = HTTParty.post("https://ssl.reddit.com/api/v1/access_token",
:body => {
:state => params[:state],
:redirect_uri => "http://localhost:3000/users/auth/reddit/callback",
:code => params[:code],
:grant_type => 'authorization_code',
},
:basic_auth=> {
username: ENV['REDDIT_KEY'],
password: ENV['REDDIT_SECRET']
}
)
logger.info(@result.to_json)
我尝试的事情:
如果有人有任何想法,那将会受到大力赞赏。在这一天中度过了最好的一天,并且变得有点荒谬。感谢。
答案 0 :(得分:0)
好的,它正在工作。哇这令人尴尬......所以我使用的omniauth-reddit gem实际上为你获取了令牌以及授权本身 - 使用该gem只需要完整的额外步骤,因此它实际上不止一次被使用invalid_grant。
更糟糕的是,我看到了“令牌”#39;在今天早些时候的回复中,使用它测试了一个直接的API调用,但是必须以某种方式弄乱语法,因为格式不是我所期望的(还有一个'授权令牌&#39 ;以及我使用的指南中提到的访问令牌,所以假设它是前者)所以我整天都在进行一场疯狂的追逐。