###実現したいこと
Railsを使ってはてなAPIの操作をしたいと考えています.
はてなAPIを使ってOauth認証を行ったあとリダイレクトし,自分のブックマークを表示させる処理を行います.
なぜかaccess_token
とaccess_token_secret
を取得してレスポンスを送信しているはずなのに401 Unauthorized
が発生してしまいます.
現在導入しているgemは以下のとおりです.
gem "omniauth" #Oauth認証用 gem "omniauth-hatena" #はてな認証用 gem 'hatena-bookmark-restful' #API操作用
###発生している問題・エラーメッセージ
oauthを使って認証はできましたが,hatena-bookmark-restful
を使ってAPI操作をするときに401が発生してしまいます.
hatena-bookmark-restful
を使う前提として以下のように設定しています.
access_token
とaccess_token_secret
についてはoauth認証時にセッションに格納しています.
- sessions_controller
ruby
1auth = request.env['omniauth.auth'] 2session[:oauth_token] = auth[:credentials][:token] 3session[:oauth_token_secret] = auth[:credentials][:secret]
ruby
1#hatena-bookmark-restfulの設定 2credentials = Hatena::Bookmark::Restful::V1::Credentials.new( 3 consumer_key: 'consumer_key', 4 consumer_secret: 'consumer_key_secret', 5 access_token: session[:oauth_token], 6 access_token_secret: session[:oauth_token_secret] 7) 8client = Hatena::Bookmark::Restful::V1.new(credentials) 9 10#ブックマークを表示させる処理 11client.my #<=401 unauthorizedが発生
hatena-bookmark-restfulソースコードについては以下を参照お願いします.
consumer_key
とconsumer_secret
については確認済みです.
- 送信時のHTTP
date: "Mon, 18 Jul 2016 02:21:41 GMT" content-type: "text/plain; charset=utf-8" content-length: "36" connection: "close" set-cookie: "b=$1$PyjVnrKg$o9jcXZk8xGNZrBRvc1GsS.; expires=Sun, 13-Jul-2036 02:21:41 GMT; domain=hatena.ne.jp; path=/" x-content-type-options: "nosniff" x-framework: "Ridge/0.11" x-ridge-dispatch: "Hatena::Bookmark::Engine::Api::V1::My::Bookmark#default" x-runtime: "3ms" x-cache: "MISS from squid.hatena.ne.jp" x-cache-lookup: "MISS from squid.hatena.ne.jp:8080" via: "1.1 bookmark2squid14.hatena.ne.jp:8080 (squid/2.7.STABLE6)" x-roles: "[sb]" vary: "Accept-Encoding,Cookie,User-Agent"
####補足
補足としてomniauth
とFaraday
を使ったレスポンス送信も実行しましたが,同じく401 Unauthorized
が発生しています.
###質問
- omniauthの
access_token
をaccess_token_secret
を取得する場所が以下の場所であっているかがわかりません.
access_token = request.env['omniauth.auth'][:credentials][:token] access_token_secret = request.env['omniauth.auth'][:credentials][:secret]
- もし
access_token
とaccess_token_secret
の場所あっていたとして(可能性は低い)なぜ401 Unauthorized
が発生するのかがわかりません.
以上2点です.
初めての質問ではありますが何卒よろしくお願い致します.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。