Mach3.laBlog

Anywhereのクラスを使ってユーザをフォローさせてみる

この記事は賞味期限切れです。(更新から1年が経過しています)

Twitterの@anywhereは既に提供を終了していますので、本記事の内容も利用出来ません。
Sunsetting @Anywhere | Twitter Developers

先日、Twitter公式から「フォローボタン」がリリースされましたね。
とても便利そうなのですが、今日はそのボタンのお話ではなく、
@anywhereを使ってユーザをフォローさせるスクリプトのお話です。

User.follow

currentUser.follow()について

AnywhereのTwitterオブジェクトに生えているcurrentUserにfollowメソッドがあるのですが、
これは、「このユーザーで誰かをフォローする」ためのメソッドではなく、
「このユーザーをフォローする」ためのメソッドです。
つまり、

twttr.anywhere(function(tw){
    if( tw.isConnected() ){
        tw.currentUser.follow();
    } else {
        // ログインボタン表示
    }
});

こんなふうにしても自分で自分をフォローしようとしてるだけで何も起きません。
引数とか渡してみても変わらず。
じゃぁどうするの。

currentUserのidをすり替える例

が、こちらに掲載されていました。
@Anywhereを使ってフォローしてみたり | polidog lab++

要するに、idを参照してフォローの処理を行っているなら、
フォローの時だけidを差し替えて別人になってもらえば良いと。
なるほど参考になりました。

別のインスタンスを作る例

上の記事を読んでから気付いたのですが、
currentUserと同じクラスのインスタンスを作った方が理にかなっているのではないかと。
探してみたら、TwitterオブジェクトにUserというクラスが生えていました。

Userクラスの使い方

オブジェクトでオプションを渡してnewしてやればもう使えます。
そしてfollow()すれば、今サインインしてるユーザ(currentUser)から
目的のユーザ(myUser)をフォローさせられるわけですね。

twttr.anywhere(function(tw){
    if( tw.isConnected() ){
        var myUser = new tw.User({ "id" : "XXXXXXXX" }); // IDを入れてね!
        // ↓これでid:XXXXXXXXのユーザをフォロー出来ます
        myUser.follow(function(success){
            if( success ){ alert("フォローしたよ!"); }
            else { alert("なんか失敗したよ!"); }
        });
    } else {
        // ログインボタン表示
    }
});

follow()の引数に渡せるコールバック関数には、
フォローが成功したか否かのboolが引数として渡されます。

既にフォローされているかを確認してからフォローさせる

既にフォローされている場合はfollow()する必要がないので、
currentUser.isFollowing()で条件分岐をしてみます。

第一引数にフォロー済みかどうかを調べたいID、
第二引数に結果を受け取る為のコールバック関数を渡して使います。
コールバック関数にはフォロー済みか否か真偽値で渡されます。

twttr.anywhere(function(tw){
    var id_str, callback;
    id_str = "XXXXXXXX", //フォローさせたいID
    callback = function(f){
        if( f ){ alert("フォロー済みだよ!"); }
        else { alert( "まだフォローしてないよ!"); }
    };
    tw.currentUser.isFollowing( id_str, callback );
});

もろもろまとめてみた例

サインインの条件分岐も併せてまとめてみる。

HTML

<input type="button" id="follow-me-button" value="フォローしてね!" />

JavaScript

twttr.anywhere( function(tw){
    var id_str, followMe;
    id_str = "XXXXXXXXX";
    followMe = function(){
        if( !tw.isConnected() ){
            // サインインしてなければしてもらおう
            tw.bind( "authComplete", followMe );
            tw.signIn();
            return;
        }
        tw.currentUser.isFollowing( id_str, function( f ){
            if( f ){
                alert( "もう既にフォローしています" );
            } else {
                if( confirm( "本当にフォローしちゃっていいですか?" ) ){
                    ( new tw.User({ id:id_str }) ).follow(function(){
                        alert( "フォローしました" );
                    });
                }
            }
        });
    };
    $("#follow-me-button").click( followMe );
});

まとめ

単純にフォローさせるだけなら公式のボタンで事足りますが、
例えばキャンペーンサイト等でツイートさせるついでにフォローしてもらう、
みたいな処理をしたい場合に使える機能ですね。

ここらへんの情報がドキュメントになって公開されていれば幸せになれるのですが、
私が探した限りでは公式の物は見つかりませんでした。探し方が悪いのかな…?

もしご存知の方いらっしゃいましたら優しく教えてください。

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

ITキヲスク | 2011年6/12~6/18の週間ブックマークd41d8cd98f00b204e9800998ecf8427e