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