2013-11-02 10 views
5

oauth2 gemを使用してrubyでRedditにOAuthしようとすると、私は{"error" : 401}を得続けます。 wikiページには、これは正しくないためか、存在しない資格のですが、私は私が正しいものを持っているポジティブだと述べている:RedditでOAuthを使用すると401エラーコードを取得する

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 

答えて

0

これはしばらく時間がかかり、コードがしばらく消えてしまったので、今すぐ診断する方法はありません。私の推測では、redditのOAuth2フレームワークのかなり緩やかな実装が関係しています。

しかし、Rubyを使用していて、OAuth2経由でredditに接続したい場合は、reddをご覧ください。

2

あなたのOAuth2のサイトオプション:: Clientは、「https://ssl.reddit.com/api/v1/」でなければなりません。

+0

申し訳ありませんが、サイトはまだ私に '{"エラー ":401}'を返します – avinashbot

関連する問題