概要
Google APIs が提供する BloggerAPI の V3 を Ruby からコールしてみました
今回は認証方式に API キー認証を使っています
環境
- macOS 10.14.3
- Ruby 2.5.1p57
- google-api-client 0.28.4
Blogger API V3 の有効化
ここから Blogger API V3 を検索して有効にします
API を選択し
API キーの作成
今回は API キーという認証方式を使って BloggerV3 API をコールします
認証情報から API キーを作成しましょう
一応制限として BloggerV3 API のみをコールできるようにしました
Google APIs には複数の認証方式があります
基本は OAuth2 認証を使ってアクセストークンを取得しますが CLI 環境だといろいろ面倒です
API キー方式を使えば簡単な文字列のキーを使って API をコールすることができます
ただし、API キーの場合はコールできる API に制限があります
BloggerV3 だと例えば listByUser などは API キー認証ではコールできません
コールしようとすると Google::Apis::AuthorizationError
エラーが発生します
ログの詳細を見るとわかりますが Login Required
なので OAuth2 でブラウザログインをしてアクセストークンを取得して API コールする必要があるのがわかります
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
なので今回はコール可能な API をコールする方法を紹介しています
記事の一覧を取得する
特定のブログに対する記事の一覧の取得は API キー認証で行なえます
API キーの指定の他にブログ ID と呼ばれるブログの識別子が必要になります
Blogger の管理画面にログインすれば URL バーに ID が表示されるのでそれを使うと簡単です
bundle init
vim Gemfile
gem "google-api-client"
bundle install --path vendor
vim app.rb
require 'google/apis/blogger_v3'
KEY = 'api-key'
BLOG_ID = '1234567890' # get from https://www.blogger.com/
cli = Google::Apis::BloggerV3::BloggerService.new
cli.key = KEY
ret = []
token = nil
loop do
posts = cli.list_posts(BLOG_ID, max_results: 500, page_token: token)
ret.push(posts.items)
token = posts.next_page_token
break if token.nil?
end
ret.flatten!
puts ret.first.to_json
list_posts
を使います
今回指定しているオプションは max_results
と page_token
です
max_results
は取得する件数です
デフォルトだと 10 になっているので最大の 500 を指定しています
page_token
は次の件数がある場合に取得できます
今回の場合であれば 500 件以上の場合は next_page_token
が返ってくるので次の 500 件を取得しています
あとは結果をまとめて、とりあえず最初の 1 件目だけ表示しています
配列の中には Google::Apis::BloggerV3::Post クラスのオブジェクトが入っているのであとは必要なパラメータを参照すれば OK です
コールできなかった API
- Blogs
- Users
- BlogUserInfos
- PageViews
- PostUserInfos
基本的には user_id
が必要な API はダメでした
PageViews はユーザ情報は不要なのですがダメでした
API キーでアクセスできるのは Public な記事やコメント情報だけっぽいです
最後に
BloggerV3 API を Ruby からコールしてみました
今回紹介した API キー認証の場合には API に制限がありコールできない API もあるので注意してください
おそらく API キー認証の制限は BloggerV3 API だけではなく他の API でも言えることだと思います
コールできるかどうかやコールの方法は API Explorer があるのでこれを使いながらやるとわかりやすいと思います
0 件のコメント:
コメントを投稿