PINコードによる認可の実装
それでは実装に入っていきましょう。jsOAuthによるTwitterのPINコード認証の実装は、以下のようになります。
//初期化パラメータ var options = { //TwitterのAPI情報 requestTokenUrl: "https://api.twitter.com/oauth/request_token", authorizationUrl: "https://api.twitter.com/oauth/authorize", accessTokenUrl: "https://api.twitter.com/oauth/access_token", //Twitterのdeveloperサイトで登録したアプリのkey/secret consumerKey : **********, consumerSecret : **********,, }; //oauthオブジェクトの初期化 var oauth = OAuth(options); //アクセストークンを取得するためのリクエストを投げる oauth.fetchRequestToken(function(url) { //ブラウザで認証画面を表示させる var appControl = new tizen.ApplicationControl("http://tizen.org/appcontrol/operation/view", url); tizen.application.launchAppControl(appControl) //PINコードを入力するダイアログを表示する var pin = window.prompt("Please enter your PIN", ""); //PINコードを適用する oauth.setVerifier(pin); //アクセストークンを取得する oauth.fetchAccessToken(function(){ //タイムラインを取得する oauth.getJSON("https://api.twitter.com/1.1/statuses/home_timeline.json",function(e){ console.log(e) }); }); });
まず、OAuthオブジェクトを初期化するためにTwitterの認可に必要なURLや、Twitterのdeveloperサイトで登録したアプリの情報を設定します。
初期化が済んだら、次に「fetchRequestToken」メソッドでTwitterへ認可のリクエストを投げます。通信が成功すると、ユーザに認可をさせるための認可ページのURLが返されます。このURLをブラウザで表示させ、ユーザにTwitterへのログインとアプリケーションの認可を行ってもらいます。
認可が済んだらPINコードが表示されるので、ユーザはそれをコピーし(Tizenでは文字列のコピーは長押しで行えます)、アプリ画面に戻り(アプリ画面の切替はホームボタンの長押しで行えます)、アプリ内で表示されているダイアログにそのPINコードを貼り付けます。
PINコードを取得したら「setVerifier」メソッドで設定し、「fetchAccessToken」でサーバにアクセストークンを取得しに行きます。
アクセストークンの取得が成功したら、「getJSON」メソッドでTwitter APIにGETアクセスをし、JSONデータをオブジェクトとして取得します。一度アクセストークンを取得できれば、これらのAPIリクエストは繰り返し行うことができます。
また、ブラウザの起動部分で使っている「ApplicationControl」オブジェクトは、Androidでいう暗黙的インテントと同じような動きをします。ここでは「指定したURLを見ることのできるアプリ」を起動しています。