Rails 中获取访问令牌请求失败并出现 OAuth::Unauthorized 401 问题

发布于 2024-10-10 01:14:05 字数 1057 浏览 0 评论 0原文

首先,我正在尝试将我的应用程序与中国的一个网站连接起来。我不确定这是否重要,因为该网站完全支持 Oauth,所以不应该。

这是我的代码。

第一步:

  require 'oauth'


   def consumer
     OAuth::Consumer.new("206506xxxx", "574705f63783xxxaa4a0bd35e34390fb", :site =>"http://api.t.sina.com.cn")
    end


 def request_token

    @request_token = consumer.get_request_token
  session[:request_token] = @request_token
    session[:request_token_secret] = @request_token.secret
 redirect_to @request_token.authorize_url(:oauth_callback => 'http://localhost:3000/accesstoken')

 end

效果很好,我能够访问authorize_url并获取oauth_verifier

但是,当我尝试获取访问令牌时遇到了问题。

 def access_token
 request_token = OAuth::RequestToken.new(
  consumer,
  session[:request_token],
  session[:request_token_secret]
)


access_token = request_token.get_access_token(:oauth_verifier=>params["oauth_verifier"])


 end 

我也尝试过

   access_token = request_token.get_access_token

,但他们都返回了 401 错误。

我清理了会话,因此可能不是由于会话过期

有任何想法吗?

First of all, I am trying to connect my app with an site in China. I am not sure if that matters, it shouldn't since that site fully supports Oauth.

Here is my code.

First step:

  require 'oauth'


   def consumer
     OAuth::Consumer.new("206506xxxx", "574705f63783xxxaa4a0bd35e34390fb", :site =>"http://api.t.sina.com.cn")
    end


 def request_token

    @request_token = consumer.get_request_token
  session[:request_token] = @request_token
    session[:request_token_secret] = @request_token.secret
 redirect_to @request_token.authorize_url(:oauth_callback => 'http://localhost:3000/accesstoken')

 end

It worked well, I was able to go to authorize_url and get an oauth_verifier

However, I encountered an issue when I was trying to get the access token.

 def access_token
 request_token = OAuth::RequestToken.new(
  consumer,
  session[:request_token],
  session[:request_token_secret]
)


access_token = request_token.get_access_token(:oauth_verifier=>params["oauth_verifier"])


 end 

I also tried

   access_token = request_token.get_access_token

But they both returned 401 error.

I cleaned the session so it's probably not due to session expiry

Any Ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无畏 2024-10-17 01:14:05

我自己解决了这个问题,所以

  session[:request_token] = @request_token

我没有使用它,而是使用了

   session[:request_token] = @request_token.token 

有效的方法。

I solved the problem myself, so instead of using

  session[:request_token] = @request_token

I used

   session[:request_token] = @request_token.token 

which worked.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文