티스토리 뷰
이번에는 실제로 Evernote cloud api를 콜하는 것을 해보겠다.
Token을 얻는 부분은 아래 URL에 아주 잘 나와있기때문에 이부분은 패스
(http://dev.evernote.com/documentation/cloud/chapters/Authentication.php)
우선 Evernote에 무언가를 하고 싶으면 session을 맺고, authentication token을 얻어야 한다.
1. session 맺기
/** * Setup the EvernoteSession used to access the Evernote API. */ private void setupSession() { ApplicationInfo info = new ApplicationInfo(CONSUMER_KEY, CONSUMER_SECRET, EVERNOTE_HOST, APP_NAME, APP_VERSION); // TODO Retreived the cached Evernote AuthenticationResult if it exists // if (hasCachedEvernoteCredentials) { // AuthenticationResult result = new AuthenticationResult(authToken, // noteStoreUrl, webApiUrlPrefix, userId); // session = new EvernoteSession(info, result, getTempDir()); // } else { session = new EvernoteSession(info, getTempDir()); // } } /** * Get a temporary directory that can be used by this application to store * potentially large files sent to and retrieved from the Evernote API. */ private File getTempDir() { return new File(Environment.getExternalStorageDirectory(), APP_DATA_PATH); } /** * Called when the user taps the "Select Image" button. * * Sends the user to the image gallery to choose an image to share. */ public void startAuth(View v) { if (session.isLoggedIn()) { session.logOut(); } else { session.authenticate(this); } } |
setupSession : EvernoteSession 객체를 생성하는 method.
startAuth : evernote에 접속하여 login 정보를 확인하고, token을 돌려 받는 부분.
2. NoteStore 받아오기
desc) Evernote내 notebook, note 같은 것을 추가, 검색, 업데이트를 하기 위해서는 root에 해당하는 noteStore를 가져와야한다.
그래서 가장 먼저 해야할 일이기도 한다.
/* * After session established, get NoteStorre to control notes in evernote. */ private NoteStore.Client getNoteStore() throws TTransportException, EDAMUserException, EDAMSystemException, TException { String authToken = session.getAuthToken(); String userStoreUrl = "https://sandbox.evernote.com/edam/user"; // String noteStoreUrlBase = "sandbox.evernote.com/edam/note/"; // String userAgent = "IBM" + " " + "OTMR" + "/" + "v0.1"; // Get the Evernote NoteStore URL TBinaryProtocol userStoreProt = new TBinaryProtocol(new THttpClient(userStoreUrl)); UserStore.Client userStore = new UserStore.Client(userStoreProt, userStoreProt); String notestoreUrl = userStore.getNoteStoreUrl(authToken); // Set up the NoteStore client THttpClient noteStoreTrans = new THttpClient(notestoreUrl); // noteStoreTrans.setCustomHeader("User-Agent", myUserAgent); TBinaryProtocol noteStoreProt = new TBinaryProtocol(noteStoreTrans); NoteStore.Client noteStore = new NoteStore.Client(noteStoreProt, noteStoreProt); return noteStore; } |
3. Note 만들기
// The ENML preamble to every Evernote note. // Note content goes between <en-note> and </en-note> private static final String NOTE_PREFIX = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">" + "<en-note>"; // The ENML postamble to every Evernote note private static final String NOTE_SUFFIX = "</en-note>"; public void createOTMNote(View view) { if (session.isLoggedIn()) { try { // Create a new Note Note note = new Note(); // 노트 오브젝트 생성 note.setTitle("IBM OTM"); String content = NOTE_PREFIX + "<p>This note was creaged by OTMR app.</p>" + NOTE_SUFFIX; note.setContent(content); Note createdNote = session.createNoteStore().createNote(session.getAuthToken(), note); //에버노트에 노트 하나추가 Toast.makeText(this, "IBM OTM note created", Toast.LENGTH_LONG).show(); } catch (Throwable t) { t.printStackTrace(); } } } |
이 외에도 몇개의 api를 더 사용해 봤다. 그 내용은 그닥 크게 어렵지 않기 때문에 sample source를 보고 확인하기 바란다.
단순히 테스트를 위해 만든 것이기 때문에 소스는 좀 드럽네용^^;
간단히 어떤 앱인지 설명을 드리자면... sms에 card는 문자가 들어오면 evernoteAct 가 실행되고 evernote auth 맺은 후 이름을 넣고 save를 누르면 evernote에 IBM OTM이라는 이름의 노트가 생성되고 그곳에 날짜와 이름이 저장되는 아주 아주 간단한 앱..
그리고 디자인은... 완전 구리다는거... 이해해주세용 ^^; 전 디자인에 잼뱅이라...
실제 돌려보려면 EvernoteAct.java 47/48 라인에 key/secret 넣어주시고요, 또 Androidmanifest.xml 22라인에 scheme 넣어주세요
'이제 관심밖의 IT 기술 > Android' 카테고리의 다른 글
Evernote cloud api 사용하기(1)_세팅하기 (0) | 2012.09.10 |
---|
- Total
- Today
- Yesterday
- 정착서비스
- 미시사가
- TORONTO
- 벌링턴
- redhat
- 캐나다
- 부모님초청이민
- docker
- 토론토
- basement
- RHEL
- Red Hat
- 옥빌
- Jay
- 캐나다부동산
- Certificate
- 우드워킹
- 인터넷
- cert
- certification
- 온타리오
- Canada
- 토론토정착서비스
- ansible
- BC주
- RHCE
- git proGit
- 부동산분석
- 밀튼
- BTBS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |