質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

2576閲覧

Rails+OmniauthでUnauthorizedが発生してはてなAPIの操作が出来ない

Ago0727

総合スコア8

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/07/18 02:51

編集2016/07/21 12:26

###実現したいこと
Railsを使ってはてなAPIの操作をしたいと考えています.
はてなAPIを使ってOauth認証を行ったあとリダイレクトし,自分のブックマークを表示させる処理を行います.

なぜかaccess_tokenaccess_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_tokenaccess_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_keyconsumer_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"

####補足
補足としてomniauthFaradayを使ったレスポンス送信も実行しましたが,同じく401 Unauthorizedが発生しています.

###質問

  • omniauthのaccess_tokenaccess_token_secretを取得する場所が以下の場所であっているかがわかりません.
access_token = request.env['omniauth.auth'][:credentials][:token] access_token_secret = request.env['omniauth.auth'][:credentials][:secret]
  • もしaccess_tokenaccess_token_secretの場所あっていたとして(可能性は低い)なぜ401 Unauthorizedが発生するのかがわかりません.

以上2点です.

初めての質問ではありますが何卒よろしくお願い致します.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

しばらく前からはてなの API が User-Agent なしのリクエストを拒否するようになったようです。この Pull Request で User-Agent 付けるようにしていますので、 Gemfile に gem 'hatena-bookmark-restful', '~> 0.1.1' と書いて bundle update すれば直ると思います。

詳しくは以下の記事をご覧ください。

Pinboard とはてなブックマークを同期する - portal shit!

投稿2017/01/13 03:03

morygonzalez

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問