ソラマメブログ
< 2024年05月 >
S M T W T F S
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Mail

2007年05月16日

Twitter連携(2) phpソース

twitterSample links
Twitter連携(2) phpソース

Twitter連携サンプルのphpソースもhttpRequestモジュールより先に公開しておきます。

オフィシャルのデベロッパー向けページ
にあるサンプルphpソースを改造しただけです。

Twitter連携(2) phpソース
ざっとですがphpの処理の流れを解説します。

SLよりhttpRequestを用いたPOST送信の内容を受け取り、
ユーザ名、パスワード、メッセージが含まれているか確認。
そうでなければ"error パラメータがたりないヨ"文字列をSLへ返します。
その後curlを用いて(すいません良く知りません)TwitterのAPIにアクセスします。
APIアクセスが成功すれば"success"の文字列をSLへ返します。
失敗した場合は"error なんたらかんたらな理由です"という文字列をSLへ返します。

TwitterのAPIアクセスにはBASIC認証が必要な模様です。
lslWiki llHTTPRequestによれば

Although the HTTP_AUTHORIZATION parameter is not available, you may still login to websites requiring basic authentication by formatting your url appropriately:

string username = "Your Name";
string password = "Your Password";
string url = "http://" + llEscapeURL(username) + ":" + llEscapeURL(password) + "@domain.com/page.php";

HTTP_AUTHORIZATIONパラメータは実装されていないが、
上記のようなフォーマットでurlにアクセスすればBASIC認証が必要なサイトにアクセスできる(かも??)

とあるので、ひょっとしたらphpをはさま無くても
直接lslからTwittersのapiをたたけるかもしれませんが、
楽天CD検索サンプルの時の用に2048バイトの壁に苦労しそうな気がしたので、試していません。
色々外部と連携をとるときは合間のphpを書いたほうが
lslだけで実装するより全然楽だなあ…とは思うのですが
lslだけですむのなら別途リソースを必要としないので、それも魅力的ですね。


<?php

function postToTwitter($username,$password,$message){

$host = "https://twitter.com/statuses/update.xml?status=".urlencode(stripslashes(urldecode($message)));

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);

$result = curl_exec($ch);
$resultArray = curl_getinfo($ch);

curl_close($ch);
if($resultArray['http_code'] == "200"){
echoStatus(TRUE,"");
} else {
echoStatus(FALSE,"http_code is ".$resultArray['http_code']);
}
}
function echoStatus($bOn,$errormes){
if($bOn){
echo "success";
}else{
echo "error ".$errormes;
}
}
$p_user = $_POST['user'];
$p_password = $_POST['password'];
$p_message = $_POST['message'];

if($p_user==""){
echoStatus(FALSE,"invalid username");
}else if($p_password==""){
echoStatus(FALSE,"invalid password");
}else if($p_message==""){
echoStatus(FALSE,"invalid message");
}else{
postToTwitter($p_user,$p_password,$p_message);
}
?>


Twitterのサーバ、重いですね…。
すぐネコがでる。

同じカテゴリー(Twitterボール)の記事画像
Twitterとセカンドライフを連携(1)
同じカテゴリー(Twitterボール)の記事
 Twitterとセカンドライフを連携(1) (2007-05-16 03:57)
Posted by harayoki at 12:59│Comments(2)Twitterボール
この記事へのコメント
初めまして。
twitter関係の記事を探していてみつけました。
色々試してみてるのですが、lslWikiのやり方でtwitterのベーシック認証はクリアできましたよ。
自分の方は、後で他の人にも使ってもらえればと思っているので、ノートカードにID/PWを記録して、オブジェクトのインベントリに入れて使う形にしてみました。
Posted by Amber Hermans at 2007年05月27日 12:30
lslWikiに乗っていましたか。
レスありがとうございます。
単体で認証が通ると他にもいろいろできそうです。
Posted by at 2007年05月27日 18:32
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。