2017-03-20 1 views
0

다른 스레드에서 읽었지만 적절한 답을 얻을 수 없습니다. 그래서 여기에 있습니다 :Android 계정 관리자 및 비밀번호 저장

Oauth2 서버 구현에서 백엔드 API를 보호한다고 가정 해보십시오. 내 앱이 Facebook이나 Gmail 앱처럼 작동하도록하고 처음 로그인 한 후 수동으로 취소 할 때까지 영원히 인증되기를 원할 것입니다. 암호를 다시 묻지 마십시오. 이 암호를 장치에 저장하지 않고도 가능합니까?

이 문제를 해결하기 위해 새로 고친 토큰이 있습니까? 아니면 다른 방법으로 접근해야합니까? 또한 바퀴를 재발 명하고 싶지 않기 때문에이 문제를 해결하는 안드로이드 라이브러리가 있습니다.

답변

0

사용자의 사용자 이름, 암호 및 토큰을 AccountManager을 통해 저장하고 나중에 검색 할 수 있습니다. 앱이 열릴 때 사용자 계정이 존재하는지 확인하십시오.

나중에 계정 자격 증명을 업데이트 할 수도 있습니다. 기본 스 니펫은 다음과 같습니다.

private static final String TYPE_ACCOUNT = "com.some.package";  

public static void addAccount(Context context, String username, String password, String token) { 
    AccountManager accountManager = AccountManager.get(context); 
    Account account = new Account(username, TYPE_ACCOUNT); 
    accountManager.addAccountExplicitly(account, password, null); 
    accountManager.setAuthToken(account, TYPE_ACCOUNT, token); 
    } 

public static Account getUserAccount(Context context) { 
    AccountManager accountManager = AccountManager.get(context); 
    Account account = null; 

    try { 
     account = accountManager.getAccountsByType(TYPE_ACCOUNT)[0]; 
    } catch (Exception ignored) { 

    } 
    return account; 
    } 
+0

이것이 최선의 방법입니까? 몇 가지 코드를 찾는 것보다 예를 들어 gmail이나 fb와 같은 주요 앱에 의해 구현 된 방법에 더 관심이 있습니다. – Prasanth

+0

AccountManager를 사용하는 것이 안전하고 읽기 쉽고 유지 보수가 쉬운 코드를 제공하므로 모범 사례입니다. 귀하의 경우에는 그것을 사용할 수 있으며 AccountManager를 통해 사용자의 토큰을 확인할 수 있습니다. 추가, 제거 및 취소 작업을 구현하는 것은 매우 기본적이고, AccountManager를 사용하는 Google의 오픈 소스 프로젝트는 많지 않습니다. 방금 찾은이 https://github.com/google/iosched/blob/e8c61e7e23f74aa6786696dad22e5136b423a334/android/src/main/java/com/google/samples/apps/iosched/sync/account/Account.java – dgngulcan

+0

실제로 AccountManager를 사용하고 있습니다. 모범 사례. 그러나 다른 표준 응용 프로그램이 정확히 어떻게하는지 알고 싶습니다. 그들은 AccountManager에 무엇을 저장합니까? 액세스 토큰 만? 그렇다면 만료 된 후에 어떻게 작동합니까? – Prasanth