twitterのコールバック処理をjsでやってみよう!!その3
こんにちは、2時間かけて会社に通っているシモダです
前回コールバック用のhtmlを作りましたが、今回はそのhtmlからflashへデータを通信する方法を書きます
まず各ファイルの関係から
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.oauthverifier=requestVerifier;
var oauthRequest:OAuthRequest=new OAuthRequest("GET", "https://api.twitter.com/oauth/accesstoken", params, twitterOauthComsumer, twitterRequestToken);
oauthRequest.buildRequest(new OAuthSignatureMethodHMACSHA1);
var url:String=oauthRequest.buildRequest(new OAuthSignatureMethodHMACSHA1);
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);
これでやっとaccesstokenが返ってきます
お疲れ様でした!!