こんにちは、2時間かけて会社に通っているシモダです

前回コールバック用のhtmlを作りましたが、今回はそのhtmlからflashへデータを通信する方法を書きます
まず各ファイルの関係から

twitter_oauth.png

swfを乗せる表示用のhtmlは下記です

<html>
<head>
<script type="text/javascript">
<!--<br /> window.name = "index";
// -->
</script>
</head>
<body>
<div id="box"></div>
<script src="swfobject.js"></script>
<embed src="instagramTest.swf" id="externalasExtTest" name="externalasExtTest" width=100% height=100%>
</body>

重要なのはwindow名を指定しておくことです
window.name = "index";
こうすることによって別のhtmlからアクセスすることができます

//コールバック用html、indexを指定
var W = open("","index");
W.document["externalasExtTest"].callBackTwitter(document.URL);
window.close();

もう一つ大事なのがflash側にjs関数を登録しておくことです

ExternalInterface.addCallback("callBackTwitter", twitterOauthCallback);

jsでcallBackTwitterを実行することでflash側のtwitterOauthCallbackが実行されます flashに引数でURLを渡したら、さらにもう一度APIをたたきます

var cutend:int=str.indexOf("&oauthverifier=");
var requestVerifier:String=str.substring(cutend + 16);
var params:Object=new Object();
params.oauth
verifier=requestVerifier;
var oauthRequest:OAuthRequest=new OAuthRequest("GET", "https://api.twitter.com/oauth/accesstoken", params, twitterOauthComsumer, twitterRequestToken);
oauthRequest.buildRequest(new OAuthSignatureMethod
HMACSHA1);
var url:String=oauthRequest.buildRequest(new OAuthSignatureMethod
HMACSHA1);
var urlvariable:URLVariables = new URLVariables();
urlvariable.url = url;
var urlrequest:URLRequest = new URLRequest("proxy.php");
urlrequest.method = URLRequestMethod.POST;
urlrequest.data = urlvariable;
var urlloader:URLLoader = new URLLoader();
urlloader.addEventListener(Event.COMPLETE,urlloaderCompleteHandler);
urlloader.load(urlrequest);

これでやっとaccess
tokenが返ってきます
お疲れ様でした!!

HTML5飯