2013-03-26 2 views
6

내 안드로이드 앱의 계정 관리자를 통해 Google 로그인을 사용합니다. 내가 서버에 보내는 accesstoken을 얻을 수 있고 서버는 새로운 사용자를 만들거나 로그인 할 수 있습니다. Accesstoken은 유효 기간이 3600 초입니다. 문제는이 시간이 만료 된 후 서버가 사용자의 정보를 업데이트 할 수 없다는 것입니다. 웹 앱은 정기적으로 사용자 정보를 확인해야합니다.accountmanager 새로 고침 토큰 (오프라인 액세스)

서버가 새로 고침 토큰을 사용하여 주기적으로 데이터를 업데이트 할 수 있도록 인증 토큰과 새로 고침 토큰을 Android 계정 관리자에서 얻으려면 어떻게해야합니까? 나는 안드로이드 애플 리케이션에서 webview를 통해 로그인을 사용하고 싶지 않아요.

감사

확실 해요 현재

답변

5

이 지금 가능하다 : https://developers.google.com/+/mobile/android/sign-in#server-side_access_for_your_app

당신은 일회성 인증 코드를 요청, 서버와 토큰 액세스 서버 교류를로 보내 토큰 새로 고침. 계정 관리자를 통해

+1

들었 동안 백그라운드에서 실행됩니다하지만이 "일회성 인증 코드를 찾을 수있는 위치를 이해하지 않았다 "내 서버로 새로 고침 토큰을 보내야합니다. 나 좀 도와 줄 수있어? – Meroelyth

3

당신은 할 수는 미안 당신이 바라고있는 대답을하지 않습니다! 웹 로그인이있는 경우 하이브리드 흐름을 사용하여 서버에서 새로 고침 토큰을 얻을 수도 있지만 (https://developers.google.com/+/web/signin/server-side-flow 참조) Android 또는 iOS 플로우의 일부로 코드를 검색 할 수있는 방법은 없습니다.

사례를 사용하는 데 필요한 것이면 https://code.google.com/p/google-plus-platform/issues에 기능 요청을 제출할 수 있습니다. Google에서는 다양한 기능에 대한 수요를 파악하기 위해 그 수의 별을 적극적으로보고 있습니다.

+0

난 그냥 안녕 에이드, 나는 지침을 따르 –

0

구글 인증 과정이 :

이메일 ID가

AccountManager accountManager = AccountManager.get(getApplicationContext()); 
Account[] accounts = accountManager.getAccountsByType("com.google"); 
String emailID = accounts[0].name; // you can retrieve using google account chooser way also 

이 라인 (안 UI 스레드에서) 별도의 토큰으로 실행해야합니다에서 가져온 할 수 있습니다.

String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com"; 
String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope); 

accessToken을 저장하고 API 액세스에 사용합니다.

1 시간 (예 : 3600 초) 후에 액세스 토큰을 새로 고침해야합니다. 그러나 이제 Google은 한 시간 후에 액세스를 지원하지 않습니다. 응용 프로그램을 다시 시작하고 다음 줄을 사용하여 액세스 토큰을 가져와야합니다.

String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com"; 
String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope); 

이 배경 스레드는 항상 루프가

+1

어쨌든 Android의 백그라운드 스레드에서 Thread.sleep()을 사용하면 안됩니다. 스레드는 값 비싼 리소스입니다. AlarmManager에 의해 트리거 된 처리기 또는 백그라운드 서비스에 코드를 예약하십시오. – Renascienza