ShareKit/Classes/ShareKit/Sharers/Services/Hatena at hatena · kishikawakatsumi/ShareKit · GitHub
ShareKit といういろいろな外部サービスとの連携機能を提供するライブラリがあるのですが、それのプラグイン (ShareKit では Sharer と呼びます) として「はてなブックマーク」とリンクを共有するものを書きました。
オリジナルを fork して hatena ブランチにコミットしています。利用するには clone して hatena ブランチに切り替えます。
本家にPull Request を送ったので、もしかしたらマージされるかもしれません。
(既存の Sharer に日本のサービスはなかったのでイマイチ勝手がわかりませんでした。)
↓ 発端は fladdict さんとの下記のやりとりです。
アプリではてぶをサポートしようとしたら、APIがキモイしメンドクサイので断念した。ライブラリないかな。なければあきらめよう。
2012-08-26 23:12:48 via web
@fladdict はてブするほう?なんやったら書きますよ。はてな応援。
2012-08-26 23:29:18 via Echofon to @fladdict
@k_katsumi おお、ありがとうございます! とりあえず、昨日おみせしたやつTestFlightしますね
2012-08-27 00:01:18 via web to @k_katsumi
@fladdict どうもっす。仕様とあと適当に締切を設定してくれたら間に合うように書きます。
2012-08-27 00:06:16 via Echofon to @fladdict
@k_katsumi うぃ、仕様書というか、ShareKitがわりとイイ感じなのでこれにはてなを追加しようかなぁと思ってたところなんです。URL
2012-08-27 00:08:27 via web to @k_katsumi
@fladdict なるほど。じゃあShareKitを見て合わせてみます。なんやったらPullReqしよ。
2012-08-27 00:10:24 via Echofon to @fladdict
@akisutesama @k_katsumi sharekitはステキライブラリですよ。もっと流行るべき
2012-08-27 01:13:56 via web to @akisutesama
はてなブックマークへの投稿は昔書いたことがあったので、認証を OAuth にしたらあとはカンタンそうだなと思って安請け合いしました。いやまあ、特に難しいことはなかったんですけど。
@fladdict ShareKitってこのリポジトリで合ってます?最後の更新が2年以上前っぽいですけど。 URL
2012-08-31 16:45:26 via Echofon to @fladdict
@fladdict はてなブックマークのShareKit拡張書いたよー URL hatenaブランチをチェックアウトしてください。
2012-09-04 04:26:28 via YoruFukurou to @fladdict
@k_katsumi ありがとうございまっす!!! さっそく組み込むです!
2012-09-04 11:52:08 via web to @k_katsumi
@fladdict OAuthだけでいいっすよね。ただiOS6でサンブルプロジェクトで動かすとたまにクラッシュすることがあった気がします。まだ直せてない。あとOAMutableURLRequestを拡張してるのは付属のに2重エンコードのバグがあったからです。
2012-09-04 11:53:28 via Echofon to @fladdict
@k_katsumi おお、2重エンコードなんてしてたのですねぇ。そのfix本家におつたえしたら喜ばれそう。
2012-09-04 11:55:36 via web to @k_katsumi
ShareKitのOAuthConsumerの2重エンコードこれね。 URL これだとKeyとValueをURLエンコードしたあとさらにエンコードするから「extraOAuthParametersがある場合に」シグネチャがおかしくなる。
@k_katsumi おぉ。なるほです!
2012-09-04 12:06:08 via web to @k_katsumi
↑ ちょっとだけハマったのは、付属している OAuth ライブラリ (OAuthConsumer) が不具合のあるリビジョンのもので、シグネチャを組み立てるときに追加の OAuth パラメータの部分を2重に URL エンコードしていました。
そのため、はてなの OAuth は必ずコールバック URL を oauth_callback パラメータで指定する必要があるのですが、シグネチャが invalid になって OAuth が成功しないということがありました。
↓ こちらの不具合は別の Pull Request でパッチを送ったので現在は修正されています。
Fix double URI encode for extra OAuth parameters. by kishikawakatsumi · Pull Request #515 · ShareKit/ShareKit · GitHub
@k_katsumi うーん、「認証要求に問題が発生しました」って怒られる。Consumer = APIキー Secret = 秘密鍵ですよね。Callbackはアプリ登録時のものにしてます。plistじゃなくてクラス内にキー直書きでいいんですよね。
2012-09-04 12:37:28 via web to @k_katsumi
@fladdict 僕の環境だとSHKHatena.mの82行目をwrite_publicだけにしたら通りました。scopeパラメータは完全にはてなの仕様なので詳しい人に聞かないとわからないっすねえ。
2012-09-04 13:34:33 via Echofon to @fladdict
@k_katsumi はてなAPI、不正トークンエラーとかもバリバリでて、なんかAPIがすごい不安定ですよねぇ。社内的にAPI全然興味ないのかしらとか思う。
2012-09-04 14:45:40 via web to @k_katsumi
@fladdict 何回かの割合でトークンが不正って言われちゃいますよね。。。あんまり安定しないようだとID, PASSWORDでWSSE認証するほうも用意しますわ。
2012-09-04 14:47:22 via Echofon to @fladdict
@k_katsumi ありがとうございますー。とりあえず埋め込んだものをもうちょっとブラッシュしてTestFlightを発射できるようにしますね!
2012-09-04 14:50:45 via web to @k_katsumi
↑ そんなこんなでとりあえず書いてみた割りにはちゃんと使えてるようでよかったです。
OAuth で許可するスコープに write_private を書いたら失敗する点とか気になるところはあるけど。。。
はてなブックマークのShareKit拡張もこのままPullRequest送ろうかしら。さっきのが取り込まれたらファイルが1組減るんだけど。 URL
@k_katsumi いいね!
2012-09-16 14:21:06 via web to @k_katsumi
@fladdict 一点サービス名をローカライズ(Hatena Bookmark => はてなブックマーク)しようかどうか考えていて、他にサービス名をローカライズしてるところがない(必要がない)からstringsファイルに追記していいものかどうか悩んでいます。
2012-09-16 14:26:57 via Echofon to @fladdict
@k_katsumi なくていいんじゃないでしょうか。日本語サービスは日本人以外みんなが困るのでw
2012-09-16 14:27:55 via web to @k_katsumi
@fladdict そですね。僕もそんな気がします。
2012-09-16 14:28:55 via Echofon to @fladdict
↑ Pull Request しました。↓
Add Hatena Bookmark Sharer. by kishikawakatsumi · Pull Request #521 · ShareKit/ShareKit · GitHub