はてなブックマーク ブックマーク API
本ドキュメントに関する注意事項
本ドキュメントははてなブックマーク REST API の解説の一部です。
ブックマーク API の概要
名前 | 実行する操作 |
---|---|
GET /rest/1/my/bookmark | ブックマーク情報を取得する |
POST /rest/1/my/bookmark | ブックマークを追加または更新する |
DELETE /rest/1/my/bookmark | ブックマークを削除する |
GET /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 認証 (read_public または read_private) が必要です。
HTTP メソッド
GET
でアクセスしてください。
引数
url
取得したいブックマークの URL を url
クエリーパラメーターに指定します。
結果
取得に成功した場合、ブックマークオブジェクトを返します。
ブックマークが存在しない場合、ステータスコード 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
でアクセスしてください。
引数
url
comment
tags
post_twitter
post_mixi
post_evernote
private
取得したいブックマークの URL を url
クエリーパラメーターに指定します。
任意でブックマークコメントを 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
でアクセスしてください。
引数
url
取得したいブックマークの URL を url
クエリーパラメーターに指定します。
結果
削除に成功した場合、ステータスコード 204
を返します。
ブックマークが存在しない場合、ステータスコード 404
を返します。
リクエストが不正である場合、ステータスコード 400
を返します。
サンプルコード
ブックマークを追加・取得・削除するサンプルコードです。
#!/usr/bin/env 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"
うまく動かない場合は以下の手順をお試しください。
gem install oauth
でoauth
ライブラリーをインストール.auth.yaml
を削除- OAuth 開発者向け設定ページにてサービスの状態、OAuth Consumer Key/Secret の確認、承認を求める操作の確認