具体的には以下の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 件のコメント:
コメントを投稿