안드로이드2012.08.12 13:04

에버노트는 OAuth 를 이용해서 사용자 인증을 처리 합니다.

최초 인증 정보가 없을 땐 Web 을 이용해서 사용자 로그인후 인증 정보를 돌려 받아서 사용을 하는데, 

앱을 종료 하거나 Activity 를 이동하거나 (session 인스턴스 관리방법에 따라 다름) 한 뒤에 

다시 에버노트를 접근 하려고 하면 또 Web 을 통해 인증을 해야 합니다.


보통은 한번 인증을 받으면 인증 받은 정보를 앱에 저장 해 두고 다시 사용하지요.

그런데, 에버노트 라이브러리 상에서는 이 방법이 보이지 않았습니다.


HelloEDAM 샘플 프로젝트를 참고하다 보면 중간 부분에 주석으로 된 코드가 있는데 

그 부분이 바로 재사용을 위한 방법입니다.



로컬에 저장된 인증 정보가 있다면, 해당 정보를 불러서 AuthenticationResult 인스턴스를 만들고

그 인스턴스를 이용해서 EvernoteSession 을 얻어서 사용하면 됩니다.


그런데 AuthenticationResult 를 만들 때 필요한 authToken, noteStoreUrl, webApiUrlPrefix, userId 를 얻을 방법이 없었던 겁니다.    (authToken 은 session 에서 getAuthToken() 으로 얻을 수 있긴 합니다)


현 시점에서는 에버노트 SDK 에 같이 포함된 소스 코드를 살짝 수정해서 사용하는 방법 밖에 없어 보입니다.

SDK 다운로드 : https://github.com/evernote/evernote-sdk-android 


연동하려는 프로젝트에 SDK 에 포함된 HelloEDAM 의 Libs 에 있는 라이브러리 5개 중

 - evernote-api-1.21.jar 와 evernote-client-android.jar 를 빼고 3개를 복사해서 연동 합니다.


SDK 에 포함된 소스를 프로젝트에 추가해 주세요.


그러면 개발하시는 프로젝트가 이런 모습이 될겁니다.





이제 소스에 포함된 EvernoteSession.java 클래스를 열어서 맨 아래 부분에 아래처럼 인증 결과를 리턴하는 메서드를 추가해 줍니다.

/**

* 인증 받은 정보를 리턴하는 메서드 추가.

* @return

*/

public AuthenticationResult getAuthenticationResult() {

        return authenticationResult;

}



이제 인증을 얻은 후 인증 정보를 preference 등에 기록해 두고 다음에 재사용 할 수 있게 됩니다.



한가지 마음에 걸리는 부분은 저장해둔 인증 정보를 사용해서 EvernoteSession 을 생성할 때

그 시점에 인증정보 유효성 확인이 안되고 최종적으로 노트를 생성하려고 하는 시점에 

인증정보 유효성 여부가 판단되는 점입니다.


에버노트 연동을 위한 클래스를 첨부합니다. 

참고하세요.



EvernoteAdapter.java



Posted by Dr.Kein

댓글을 달아 주세요