mixiアプリ用に、いい感じにユーザ情報を取得してくれるAPIはないものかと探しまわって、opensocial-actionscript-clientというライブラリが見つかったので、試してみました。とはいえ、まだまだ頻繁に更新が入っていて、実用に耐える代物になるのかはよく分からないので、ほんとに試してみただけ。
ライブラリは、Google Code のページの Downloads にありますが、12月18日(金)の時には、一部ファイルの中身が空っぽだったりと、不完全なものだったので、直接 Source から、SVNでダウンロードしました。

ファイルを取得できたら、src/org/ 以下を適切な場所に移動してあげてください。
JsWrapperClient クラスが、Externalinterface でもってJSとのやり取りをするんだと思います。このクラスを初期化して準備が完了するまで、利用することができない様子。
package {
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.text.TextField;
import org.opensocial.client.base.Person;
import org.opensocial.client.core.Feature;
import org.opensocial.client.core.OpenSocialClientEvent;
import org.opensocial.client.features.AsyncDataRequest;
import org.opensocial.client.features.PeopleRequestOptions;
import org.opensocial.client.features.ResponseItemEvent;
import org.opensocial.client.jswrapper.JsWrapperClient;
[SWF(width=210, height=130, backgroundColor=0xaaaaaa, frameRate=30)]
public class Main extends Sprite
{
private var _client:JsWrapperClient;
public function Main()
{
// ラッパークライアントの初期化とスタート
// 完了してからリクエスト処理へ
_client = new JsWrapperClient('opensocial.flash');
_client.addEventListener(OpenSocialClientEvent.CLIENT_READY,
function(e:OpenSocialClientEvent):void {
_client.removeEventListener(OpenSocialClientEvent.CLIENT_READY, arguments.callee);
request();
}
);
_client.start();
}
private function request():void
{
// リクエストオプションインスタンスを作成する
var options:PeopleRequestOptions = new PeopleRequestOptions()
.setUserId('@me')
.setGroupId('@self');
// 非同期データリクエストインスタンスを作成する
var req:AsyncDataRequest = new AsyncDataRequest(Feature.PEOPLE_GET, options);
// 完了時のイベントリスナーを追加する
req.addEventListener(ResponseItemEvent.COMPLETE,
function(e:ResponseItemEvent):void {
req.removeEventListener(ResponseItemEvent.COMPLETE, arguments.callee);
// 結果表示用
var loader:Loader = new Loader();
loader.x = loader.y = 5;
addChild(loader);
var tf:TextField = new TextField();
tf.width = tf.height = 90;
tf.x = 100; tf.y = 10;
addChild(tf);
// 取得したデータを取り出す
var person:Person = e.response.getData();
// ニックネームを取得
var displayName:String = person.getDisplayName();
tf.appendText(displayName + "\n");
// サムネイル画像を取得
try {
var urlRec:URLRequest = new URLRequest(person.getThumbnailUrl());
loader.load(urlRec);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
function(event:Event):void {
trace('load complete');
}
);
} catch (e:Error) {
throw Error('load error');
}
}
);
// 呼び出しを行う
req.send(_client);
}
}
}
必要な機能があるかどうかは、Docs とにらめっこしないといけないです。そもそもどういう機能が必要なんだろう...。






