具体的には以下の3つのステップを踏む。
- Evernote サービスのURLを指定してUserStore.Client というクラスを初期化
- バージョンチェック
- consumer key, consumer secret, user name, password で認証
細かいコーディングはサンプルを参照すればOK, 一応こんな感じで。
public class AuthTest { private static String consumerKey = "consumer key"; private static String consumerSecret = "consumer secret"; private static String evernoteHost = "sandbox.evernote.com"; private static String userName = "user name"; private static String password = "password"; private UserStore.Client setupUserStore() throws TException { // 1. UserStore クライアントのセットアップ String userStoreUrl = "https://" + evernoteHost + "/edam/user"; THttpClient trans = new THttpClient(userStoreUrl); TBinaryProtocol prot = new TBinaryProtocol(trans); UserStore.Client userStore = new UserStore.Client(prot); // 2. バージョンチェック boolean versionOk = userStore.checkVersion("Evernote's EDAMDemo (Java)", com.evernote.edam.userstore.Constants.EDAM_VERSION_MAJOR, com.evernote.edam.userstore.Constants.EDAM_VERSION_MINOR); if (!versionOk) { System.err.println("Incomatible EDAM client protocol version"); } return userStore; } private boolean authenticate(UserStore.Client userStore) throws EDAMSystemException, TException { // 3. ユーザー認証 AuthenticationResult authResult = null; try { authResult = userStore.authenticate(userName, password, consumerKey, consumerSecret); User user = authResult.getUser(); // 認証されたユーザー String authToken = authResult.getAuthenticationToken(); // 認証トークン System.out.println("ユーザー " + user.getName() + " が認証されました。"); System.out.println("Authentication Token: " + authToken); } catch (EDAMUserException ex) { // 例外処理 String parameter = ex.getParameter(); // パラメータ EDAMErrorCode errorCode = ex.getErrorCode(); // エラーコード System.err.println("Authentication failed (parameter: " + parameter + " errorCode: " + errorCode + ")"); // 認証に失敗した場合 if (errorCode == EDAMErrorCode.INVALID_AUTH) { // consumer key が不正 if (parameter.equals("consumerKey")) { System.err.println("Your consumer key was not accepted by " + evernoteHost); System.err.println("If you do not have an API Key from Evernote, you can request one from http://www.evernote.com/about/developer/api"); // user name が不正 } else if (parameter.equals("username")) { System.err.println("You must authenticate using a username and password from " + evernoteHost); // password が不正 } else if (parameter.equals("password")) { System.err.println("The password that you entered is incorrect"); } } return false; } return true; } public static void main(String[] args) { AuthTest test = new AuthTest(); try { UserStore.Client userStore = test.setupUserStore(); test.authenticate(userStore); } catch (Exception e) { e.printStackTrace(); } } }
実行して、ユーザ名と認証トークンがコンソールに表示されれば認証成功。
ユーザー XXX が認証されました。 Authentication Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
0 件のコメント:
コメントを投稿