Creazy!

WEBエンジニア・ヤガーのテック・ガジェットブログ

Twitter 技術情報

【bit.ly対応版】見ているページをReTweetするブログ用ボタン

投稿日:


ブログからTwitterに
前に、見ているページをTwitterに投稿するBookmarkletとブログ用ボタンというエントリーを書いたのですが、もう少し機能改善したものを紹介します。
以前のサンプルでは、自分のTwitterアカウントに向けてReTweetしてもらうようにBookmarklet形式で簡易実装したのですが、見ているページのURLは特に加工せずそのままtwitterのフォームにセットしていました。
(長いURLはtwitterが自動的にbit.lyに変換してから送信される)
ですが、このURL短縮は送信後に処理されるため入力中の文字数カウントでは長いURLのままカウントされており、引用などをくっつけてRTしたい場合は、使用可能文字数が少なくなってしまっています。
ですので、もうちょっとJavaScript側で処理を追加し、bit.lyのAPIを使って短縮化したURLをセットするようにします。

bit.lyのAPIでURLを短縮化

bit.lyのAPIを使うためには、無料のアカウント登録をしてAPIキーをゲットする必要があります。
bit.ly, a simple url shortener
上記URLからアカウント登録して、Account画面にあるAPI Keyをコピーしておきます。
bit.ly
URLを短縮化するAPIは下記のフォーマットでリクエストします。

http://api.bit.ly/shorten?version=2.0.1&format=json&callback={コールバック}&longUrl={元のURL}

JavaScriptから呼び出すのでJSONPを使いたいところ。fortmat=json と callback がちゃんと使えます。
さらに、bit.lyのAPI認証はBASIC認証とパラメータによるリクエストの2種類サポートしていますが、今回はJavaScriptから処理したいのでパラメータに渡す方法をとります。下記パラメータも追加してやります。

&login={bit.lyアカウント}&apiKey={APIキー}

ソースにそのまま書くのでAPIキーはバレバレになりますが、ログインパスワードとは別なのでとりあえず大丈夫かな?

bit.ly対応版 ブログからReTweetするボタン

で、完成版です。以前はAタグの中に全部書きましたがJSONPを使う事もあるので関数化してあります。
まずは、JavaScriptを定義します。

function retweet() {
var bitly_id  = '{bit.lyアカウント}';
var bitly_key = '{APIキー}';
api = 'http://api.bit.ly/shorten'
+ '?version=2.0.1'
+ '&format=json'
+ '&callback=retweetCallback'
+ '&login=' + bitly_id
+ '&apiKey=' + bitly_key
+ '&longUrl=';
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = api + encodeURIComponent(location.href);
document.body.appendChild(script);
}
function retweetCallback(json) {
var tid = '{Twitter のアカウント}';
var d = document;
var w = window;
var l = location;
var e = encodeURIComponent;
var sel = '';
if ( d.selection ) {
sel = d.selection.createRange().text;
} else if ( w.selection ) {
sel = w.selection.createRange().text;
} else if ( d.getSelection ) {
sel = d.getSelection();
} else if ( w.getSelection ) {
sel = w.getSelection();
}
var f = 'http://twitter.com/home/?status='
+ e( sel+' RT @'+tid+': "'+d.title+'" '+json.results[location.href]['shortUrl']);
if( !w.open(f,'retweet') ) {
l.href = f;
}
}

あとは、ボタンを貼付けたいところに、

<a href="javascript:retweet();">ReTweet</a>

とすればOKですね。

-Twitter, 技術情報

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

no image

セミッターで考える、「参加型」セミナーの運用方法

先日参加した「爆発するソーシャルメディア」セミナーでセミッターの素晴らしさを体験する事ができました。 不思議な状況です。リアルで話すパネラーの後ろでオンラインで書き込まれた参加者の声。この即時性は無か …

Google:Gmailが携帯からも使えます

日本語でも3キャリアに対応したようです。 メールの閲覧、返信 — いつでもどこでもメールを閲覧、作成できます。Gmail はお使いの端末に合わせて最適化されるので、どこからでもメールにアクセスできます …

no image

楽天、楽天トラベルAPIを公開 – ついでにトラベルAPIまとめ

本日、楽天ウェブサービスより楽天トラベルに関する3つのAPI追加提供を開始しました。 【楽天ウェブサービス】RAKUTEN WEBSERVICE 楽天が楽天市場関連の商品APIに加え、楽天トラベルのA …

iPhone5sのフロントパネルのガラス割れを自分で交換

どうも、機械に詳しそうなお父さんと思われているヤガーです。 小学校を卒業する娘にボクが使っていたiPhone5sをお下がりで渡すという話を前の記事で紹介しました。 子どもに古いiPhone5sをLIN …

Macの定番エディター ミミカキエディット(mi.app)でシフト+スペースで半角スペースを入力する

Macを使い出してから長い間気になっていたことが@941さんのツイートで急に解決してしまって嬉しかったので、久しぶりにブログ書きますw 今ではすっかりMac愛用者なヤガーですが、昔はWindowsユー …

スポンサードリンク

スポンサードリンク