2013-05-14 2 views
1

Google에서 OAuth 토큰을 얻으려면 WebView를 사용하지 않는 것이 좋습니다. (사용자에게 연락처, 프로필 정보 등을 공유하도록 요청). 그 경우 Google Play 서비스 API을 사용했습니다.클라우드 기반 앱용 Google Play 서비스는 무엇인가요?

내 앱이 클라우드 기반 (로직이 클라우드에서 발생 함)이므로 클라우드에 이러한 토큰을 저장해야합니다. 또한 사용자가 여러 기기에서 로그인 할 수 있도록해야합니다 (새로운 기기에서 로그인 할 때마다 Google에 권한을 요청하지 않고).

Google blog에 언급 된 기술을 구현하려고했습니다.

나는 블로그에 언급 된 방법으로 손을 썼다. 그것은 내가 원하는대로 정확하게 작동하지 않았다. 또한 + Tim Bray의 Google 코드 프로젝트 (favcolor-accountchooser)를 확인하고 다음 코드를 확인했습니다.

 try { 
      // if this works, token is guaranteed to be usable 
      token = GoogleAuthUtil.getToken(FavColorMain.this, mEmail, SCOPE); 

     } catch (UserRecoverableAuthException userAuthEx) { 
      startActivityForResult(userAuthEx.getIntent(), AUTHUTIL_REQUEST_CODE); 
      token = null; 

     } 

블로그에 언급 된 개념과 상충됩니다. 얻은 '토큰 문자열'이 서버로 다시 보내지지 않으며 예외 블록에서 사용자에게 추가 사용 권한 (범위)이 요청됩니다. 이 스 니펫은 무엇을 의미합니까?

또한 '웹 앱'의 역할은 무엇입니까? 나는 scope 매개 변수에 언급 된 것 이외의 용도로 사용되는 것을 보지 못합니다.

또 다른 주요 문제

내 응용 프로그램은 여러 개의 Google ID를에서 연락처 권한을 소요하고 중복을 병합하고 통일 된 연락처 목록을 제공합니다 예를 를 들어

. 자, 모든 마법은 서버에서 일어나고 서버는 토큰이 필요한 사람들입니다.

내 Android 앱은 Google Play 서비스 API를 사용하며 여러 개의 Google 계정 (주소록 읽기)에 대한 사용자 권한을받습니다. 내 웹 앱에 토큰을 어떻게 전달합니까 (https 연결을 통해서만 가능합니까?). 사용자가 동일한 프로젝트 아래에서 Android 앱에 대한 권한을 부여하면 동일한 프로젝트의 웹 앱에 이러한 토큰이 표시되지 않을 수 있습니까?

다른 Android 휴대 전화에 동일한 앱을 설치하는 경우 사용자에게 이전에 권한을 부여 했음에도 불구하고 각 계정의 연락처에 액세스 할 수있는 권한을 사용자에게 부여해야합니다. 여기에 '로그인'에 대한 실제 개념이 없습니다. 모든 토큰은 모바일에서 서버로 보내야합니다.

대안 : Google Play 서비스 SDK를 사용하는 대신 웹보기를 사용하고 클라우드 앱의 토큰을 직접 가져와야합니다. 이는 직관적이지 않습니다. (Google + 금요일 앱에서는 웹보기 화면에서 최대 사용자 이탈이 발생합니다.)

답변

1

사실 면밀히 살펴보면 토큰 값은 mCustomer.execute()로 전달됩니다. 예를 들어 Fetcher.java에서이를 일부 JSON으로 압축하여 POST로 백엔드로 보냅니다. "웹 앱"은 ID 토큰을 보낼 백엔드의 등록 된 클라이언트 ID 여야합니다.

예, 웹 앱에 토큰을 전달하고 백엔드에서 사용할 수 있습니다. 이런 종류의 일을 할 때마다 HTTPS를 사용하는 것을 잊지 마십시오.

우리는 하나의 안드로이드에서 특정 사용자/범위 조합을 위해 그것을 얻는다면, 다른 사람에게도 그렇게 할 수 있도록 승인을 더 엄격하게 만들고 있습니다. https://developers.google.com/accounts/docs/CrossClientAuth

+0

고마워요. 도움이되었습니다. 하지만 당신이 공유 한 링크에 대한 하나의 작은 의심.- "크로스 클라이언트 액세스 토큰"섹션에서는 동일한 프로젝트의 여러 클라이언트 ID (Android, 웹) 등이 둘 중 하나에 의해 권한을 부여받은 토큰을 갖게됩니다. - "Android 앱이 웹 백엔드에 대한 오프라인 액세스를 얻습니다."(웹 백엔드에 대한) 인증 코드를 전송하는 방법에 대해 다시 언급합니다. 그러나 다른 절에 따르면, 우리는이 코드를 보낼 필요가 없습니다. 웹은 사용자가 이미 동의 한 것을 공유해야합니다. – Codevalley

관련 문제