【问题标题】:Getting a 401 error code when using OAuth with Reddit将 OAuth 与 Reddit 一起使用时收到 401 错误代码
【发布时间】:2013-11-13 13:37:17
【问题描述】:

在尝试使用 oauth2 gem 在 ruby​​ 上 OAuth 进入 Reddit 时,我不断收到 {"error" : 401}。 wiki 页面说这是因为凭据不正确或不存在,但我很肯定我有正确的凭据:

require "oauth2"
require "base64"

reddit = OAuth2::Client.new ENV["API_ID"], ENV["API_SECRET"], \
  :authorize_url => "https://ssl.reddit.com/api/v1/authorize",
  :token_url     => "https://ssl.reddit.com/api/v1/access_token",
  :site          => "https://oauth.reddit.com/api/v1/"

state = Digest::SHA1.hexdigest rand(36**8).to_s(36)
redirect_uri = "http://localhost:8080/oauth2/callback"

params = {"scope" => "identity",
          "response_type" => "code",
          "redirect_uri" => redirect_uri,
          "state" => state,
          "duration" => "permanent"
         }

puts reddit.auth_code.authorize_url params

# Get the url with the code that reddit redirects to
redir = gets.chomp.strip
code = redir.match(/code=([^&]*)/).captures
returned_state = redir.match(/state=([^&]*)/).captures
raise "State does not Match!" unless state === returned_state[0]

params = {"scope" => "identity",
          "redirect_uri" => redirect_uri,
          "state" => state
         }

token = reddit.auth_code.get_token(code[0], params, :headers => {'Authorization' => "Basic " + Base64.strict_encode64('#{ENV["API_ID"]}:#{ENV["API_SECRET"]}')})
response = token.get('me')
puts response

【问题讨论】:

    标签: ruby oauth reddit


    【解决方案1】:

    已经有一段时间了,代码已经消失了一段时间,所以现在无法诊断它。我的猜测是与 reddit 对 OAuth2 框架的非常松散的实现有关。

    不过,如果您使用 Ruby 并希望通过 OAuth2 连接到 reddit,也许您可​​能更喜欢查看 redd

    【讨论】:

      【解决方案2】:

      Oauth2::Client 的站点选项应为“https://ssl.reddit.com/api/v1/”。在此处查看omniauth-reddit 客户端选项https://github.com/jackdempsey/omniauth-reddit/blob/master/lib/omniauth/strategies/reddit.rb

      【讨论】:

        猜你喜欢
        • 2014-05-24
        • 2014-12-11
        • 2018-12-16
        • 1970-01-01
        • 2015-04-01
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多