Hatena::Grouphatenadeveloper

はてなブックマーク ブックマーク API

ja/bookmark/apis/rest/bookmark

はてなブックマーク ブックマーク API

はてなブックマーク ブックマーク API

本ドキュメントに関する注意事項

本ドキュメントははてなブックマーク REST API の解説の一部です。

ブックマーク API の概要

名前 実行する操作
GET /rest/1/my/bookmark ブックマーク情報を取得する
POST /rest/1/my/bookmark ブックマークを追加または更新する
DELETE /rest/1/my/bookmark ブックマークを削除する

GET /1/my/bookmark

概要

認証したユーザーのブックマーク情報を取得します。

URL
https://bookmark.hatenaapis.com/rest/1/my/bookmark

非推奨 api.b.hatena.ne.jp のエンドポイントは 2020年3月4日以降は利用できなくなります。

http://api.b.hatena.ne.jp/1/my/bookmark
認証

OAuth 認証 (read_public または read_private) が必要です。

HTTP メソッド

GET でアクセスしてください。

引数

取得したいブックマークの URLurl クエリーパラメーターに指定します。

結果

取得に成功した場合、ブックマークオブジェクトを返します。

ブックマークが存在しない場合、ステータスコード 404 を返します。

リクエストが不正である場合、ステータスコード 400 を返します。

POST /rest/1/my/bookmark

概要

認証したユーザーのブックマークを追加・更新します。

既にブックマーク済みのページであれば更新、そうでなければ新たに追加します。

URL
https://bookmark.hatenaapis.com/rest/1/my/bookmark

非推奨 api.b.hatena.ne.jp のエンドポイントは 2020年3月4日以降は利用できなくなります。

http://api.b.hatena.ne.jp/1/my/bookmark
認証

OAuth 認証 (write_public または write_private) が必要です。

HTTP メソッド

POST でアクセスしてください。

引数

ブックマークしたいページの URLurl に指定します。

任意でブックマークコメントを comment に指定することができます。

任意でブックマークにタグをつけることができます。tags クエリーパラメーターを最大10個まで指定することができます。

ブックマークした際に各種外部サービスに共有することができます。それぞれのサービスについて OAuth 認証したうえで post_twitter, post_mixi_check, post_evernote クエリーパラメーターに真値を渡すと共有できます。

ブックマークを非公開にする場合は private クエリーパラメーターに真値を渡します。

結果

追加または更新に成功した場合、ブックマークオブジェクトを返します。

リクエストが不正である場合、ステータスコード 400 を返します。

DELETE /rest/1/my/bookmark

概要

認証したユーザーのブックマークを削除します。

URL
https://bookmark.hatenaapis.com/rest/1/my/bookmark

非推奨 api.b.hatena.ne.jp のエンドポイントは 2020年3月4日以降は利用できなくなります。

http://api.b.hatena.ne.jp/1/my/bookmark
認証

OAuth 認証 (write_public または write_private) が必要です。

HTTP メソッド

DELETE でアクセスしてください。

引数

削除したいブックマークの URLurl クエリーパラメーターに指定します。

結果

削除に成功した場合、ステータスコード 204 を返します。

ブックマークが存在しない場合、ステータスコード 404 を返します。

リクエストが不正である場合、ステータスコード 400 を返します。

サンプルコード

ブックマークを追加・取得・削除するサンプルコードです。

#!/usr/bin/ruby

require 'oauth'
require 'yaml'

auth_file = '.auth.yaml'

if !File.exist?(auth_file)
  # https://www.hatena.ne.jp/oauth/develop より取得する
  auth = {
    'consumer_key' => '***',
    'consumer_secret' => '***',
  }

  @consumer = OAuth::Consumer.new(
    auth['consumer_key'],
    auth['consumer_secret'],
    :site => '',
    # 必要ならば read_private,write_private を追加する
    :request_token_path => 'https://www.hatena.com/oauth/initiate?scope=read_public,write_public',
    :access_token_path => 'https://www.hatena.com/oauth/token',
    :authorize_path => 'https://www.hatena.ne.jp/oauth/authorize')

  @request_token = @consumer.get_request_token

  print 'Open: ' + @request_token.authorize_url + "\n"
  print 'CODE: '
  @access_token = @request_token.get_access_token(:oauth_verifier => gets.strip)

  auth['token'] = @access_token.token
  auth['token_secret'] = @access_token.secret

  File.open(auth_file, 'w') {|f| YAML.dump(auth, f)}
  File.chmod(0600, auth_file)
end

auth = YAML.load(File.open(auth_file))

@consumer = OAuth::Consumer.new(
  auth['consumer_key'],
  auth['consumer_secret'],
  :site => 'https://bookmark.hatenaapis.com/rest/1',
)

@access_token = OAuth::AccessToken.new(@consumer, auth['token'], auth['token_secret'])

url = 'https://example.com'
path = "/my/bookmark?#{URI.encode_www_form [['url', url]]}"
res = @access_token.post(path)
print res.code, "\t", res.body, "\n"
res = @access_token.get(path)
print res.code, "\t", res.body, "\n"
res = @access_token.delete(path)
print res.code, "\n"

うまく動かない場合は以下の手順をお試しください。