Anywhereを使ってフォローしてみたり

Twitter ツイート Hatena Bookmark ブックマーク

@AnywhereをつかえばJavascriptだけで簡単にさっくりとツイッタークライアント作れちゃったりもします。
しかし細かい制御したりしたいなーって考えたときには簡単にはできないようです。

たとえば、フォロワーボタン押されてフォロワーになったら、メッセージを表示しようとしても、コールバックの設定ができないので何もすることができない。
いろいろ探してたら@AnywhereのAPIドキュメントを発見!!
読んでみると、やはりfollow()とかいったものがる。ってことはフォロワーボタンを用意する方法じゃなくて、こっちで勝手にフォロワー登録とかできんのかなーっとか思って書いてみました。

1
2
3
4
5
6
7
8
9

	function onAnywhereLoad(twitter) {
		if (twitter.isConnected()) {
			twitter.currentUser.follow();
		}else {
			//ログインボタン表示
		}
	};
</script>

あれ反応がない・・・とおもったら、サーバにリクエストは送っているものの、403が返ってきてました。
どうやらエラーメッセージをみてみると、「自分に対してフォローはできません」的なメッセージが。
あらら、エラーですか・・・。相手のID指定したいけど、follow()メソッドは引数とか渡せないしどうにもできない(´・ω・`)

でもよく考えてみたら、OAuth認証はさせてんだし、currentUser.idの値をフォローしたいユーザーのIDに書き換えればよくね?
ってことで、書き換えてみました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13

	var followUserId = xxxxxxxxxxx;
	function onAnywhereLoad(twitter) {
		if (twitter.isConnected()) {
			var tmp = twitter.currentUser.id;
			twitter.currentUser.id = followUserId;
			twitter.currentUser.follow();
			twitter.currentUser.id = tmp;
		}else {
			//ログインボタン表示
		}
	};
</script>

これでどうやらうまく行くみたいです。
ちなみにフォロワーかどうかチェックしたいときは以下のようにすればフォロワーチェックできます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

	var followUserId = xxxxxxxxxxx;
	function onAnywhereLoad(twitter) {
		if (twitter.isConnected()) {
			twitter.currentUser.isFollowing(ownerId,{
				success: function(follow) {
					if (follow) {
						alert("あなたはフォロワーです");
					}
					else {
						alert("あなたはフォロワーではありません");
					}

				},
				error:function(e){
					alert("connect error");
				}
		}else {
			//ログインボタン表示
		}
	};
</script>

Javascriptだけでtwitterクライアント作ることはできるし、@Anywhereは偉大だけど、やっぱり細かくいろいろやりたいのなら、どっかサーバサイドでproxyさせたほうが良いと思います。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。