Twitterの機能をJSで簡単に導入できる「@Anywhere」の使い方メモ
Twitterの諸機能をサイトに導入するためのJavaScriptフレームワーク「@Anywhere」がリリースされましたね。
その場でフォローしたりサイト上から直接Tweetしたり、Twitterがナチュラルに様々なサイトに組み込まれるようになるんですかね。
と言うわけで僕も軽く試してみたので、使い方のメモと雑感を書いてみます。
まずはアプリケーション登録
New Twitter Applicationでアプリケーション登録を行う。
- Application Name
- @AnywhereでTweetした時に表示されるアプリケーション名。
- Application Website
- Application NameにリンクされるサイトのURL。
- Organization
- 組織名?とりあえず空白で。
- Callback URL
- コネクションの許可などで一度Twitterにアクセスした場合に戻るURL。
(locationから取ってるので指定しても反映されません) - Application Icon
- アプリケーションのアイコン。
登録が完了するとAPIキーが発行され、スクリプト読み込み用のサンプルコードが表示されるので、コピーしてサイトに貼り付ける。
これで準備完了。後は使いたい機能を呼び出すだけ。
アクセス権限について
その場FollowやTweetBoxを使うには、アプリケーションのアクセス権限をRead & Writeにしなくてはなりませんが、デフォルトのアクセス権限はRead-onlyです。
しかもhttp://dev.twitter.com/appsではアクセス権限の変更が出来ないと来たもんだ!なんですかこのハマりポイント。
2010年4月16日時点で、writeアクセスが必要な機能を使いたい場合は、http://twitter.com/appsでアクセス権限をRead & Writeに変更するのが良いと思います。
※このページからwriteアクセスな機能を使いたい場合は、http://twitter.com/settings/connectionsで一度コネクションを解除して、再認証した後に試してみて下さい。
サイトに機能を導入
@Anywhereのスクリプトを読み込む
アプリケーション登録完了時に表示されるコードをそのまま貼る。
<script src="http://platform.twitter.com/anywhere.js?id=APIキー&v=1"></script>
@usernameにアカウントページのリンクを付ける
<ul id="linkifyUsers">
<li>@rewish</li>
<li>@5509</li>
<li>@GachapinBlog</li>
</ul>
<script type="text/javascript">
twttr.anywhere(function(twitter) {
// 全ての@usernameに適用
twitter.linkifyUsers();
// CSSセレクタで適用範囲を指定
twitter("#linkifyUsers").linkifyUsers();
});
</script>
Example
- @rewish
- @5509
- @GachapinBlog
@usernameにHovercardsを付ける
マウスオーバーでプロフィールが表示されるアレ。
jQueryで実装する場合はTwitterのHover Cardを実装するjQueryプラグイン twttrFloatTip :: 5509(+1)がいいですね!
<ul id="hovercards">
<li>@rewish</li>
<li>@5509</li>
<li>@GachapinBlog</li>
</ul>
<script type="text/javascript">
twttr.anywhere(function(twitter) {
// 全ての@usernameに適用
twitter.hovercards();
// CSSセレクタで適用範囲を指定
twitter("#hovercards").hovercards();
});
</script>
Example
- @rewish
- @5509
- @GachapinBlog
アプリケーションを認証するボタン
Welcome to @Anywhereのコードはそのままだと動かない。
twitter.isConnectedを関数実行にして、$('#twitter-connect-placeholder')をdocument.getElementByIdに変更。
<div id="connectButton"></div>
<script type="text/javascript">
twttr.anywhere(function(twitter) {
twitter("#connectButton").connectButton();
// 認証済みの場合
if (twitter.isConnected()) {
var User = twitter.currentUser;
document.getElementById("connectButton").innerHTML = [
'<p><img src="', User.data('profile_image_url'), '"> ', User.data('screen_name') + '</p>',
'<p><a href="javascript:void(0)" onClick="twttr.anywhere.signOut();">Sign out of Twitter</a><p>'
].join('');
}
});
</script>
サインアウトするにはtwttr.anywhere.signOut()を呼ぶ。
<a href="javascript:void(0)" onclick="twttr.anywhere.signOut()">Sign out of Twitter</a>
認証が完了した後やサインアウトした後に処理を行いたい場合は以下のように指定する。
twitter("#connectButton").connectButton({
authComplete: function() {
// 認証が完了した後の処理
},
signOut: function() {
// サインアウトした後の処理
}
});
その場でFollow出来るボタン
この機能を使うにはコネクションとアクセス権限writeが必要です。
<div id="followButton"></div>
<script type="text/javascript">
twttr.anywhere(function(twitter) {
twitter("#followButton").followButton("アカウント");
});
</script>
その場でTweet出来るbox
この機能を使うにはコネクションとアクセス権限writeが必要です。
<div id="tweetBox"></div>
<script type="text/javascript">
twttr.anywhere(function(twitter) {
twitter("#tweetBox").tweetBox({
label: "@AnywhereからTweet",
defaultContent: "@AnywhereからTweetテスト"
});
});
</script>
雑感
簡単なコードを追加するだけで、Twitterの諸機能を利用することが出来ました。
他にも色々APIがあるみたいなので、JavaScriptだけでTwitterクライアントを作ったりも出来るんですかね。
anywhere.jsの圧縮される前のコードが読みたいです。
このページの設定は/demo/twitter_anywhere/config.jsに記述しています。
動かないなぁ調べるかぁと思っていたときに解決方法が書いてあって、とても助かりました。ありがとうございます。
解決の手助けが出来て良かったです。
実は僕もヤガーさんのGreasemonkeyスクリプトにお世話になっています。
いつもありがとうございます :)
あと、気が向いたらトラックバックをお送りいただけると嬉しいです!
あれー、TB送ったんですけどねー。
届いていませんか?
すみません、何故かスパムに入ってました><
ありがとうございます!
@anywhereに興味を持ち、特にHovercardsを付けるというのが、かわいくていいなと思いました。rewishさんの説明がすごく分かりやすくてみごと自分のサイト(通常のHP)に設置できました。chromeではばっちりなんですが、IE8で見ると、「セキュリティの警告」のダイアログボックスが出現します。「いいえ」にすれば何のことなく使えるのですが、サイトに来てくれた人に自分のサイトが警戒されそうで心配です。これは仕方のない現象でしょうか。それともscriptの書き方で改善されるものなのでしょうか。教えていただけるとありがたいです。
みかさすかささん、こんにちは。
「セキュリティの警告」の件ですが、IE8でHTTPSにアクセスすると発生するようで、
IEユーザーの間では同じみの迷惑ダイアログのようですね。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1127132996
HTTPSをHTTPに変えれば警告は出ないでしょうが、
セキュリティ的にアレなのと、APIが公開されていないので、
現状、サイト側で出来ることは無いと思います。
さっそくのご回答ありがとうございました。
そうなんですか。IE使ってる人にびっくりされることは目に見えているので、やっぱり設置はやめておいた方が無難かなと思いました。
でも、とっても残念。個人の通常のサイトとTwitterの連動が普通になったらとっても楽しいに…。今後こういった点が改善されたらいいなあと思います。
参考になりました。登録してみたところ,今はRead&Writeにもできるようでした。
ところで,Anywhereによる認証と他のOAuthによる認証をサイト側から区別することってできるのでしょうか?
@andymaさん、こんにちは。
> Anywhereによる認証と他のOAuthによる認証をサイト側から区別することってできるのでしょうか?
どちらも認証方法はOAuthなので、サイト側から区別することは基本的には出来ません。
認証成功時のcallback先で何とかすれば、技術的には可能かも知れません。