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を見ることのできるアプリ」を起動しています。



