인증은 세 가지 환경에서 발생할 수 있습니다.
- 결제 통합업체의 Android 앱
- 결제 통합업체의 모바일 웹사이트
- 결제 통합업체의 데스크톱 웹사이트
흐름에 관계없이 Google은 사용자 상호작용을 결제 통합업체의 소프트웨어에 전달합니다. 결제 통합업체는 사용자에게 인터페이스를 표시하거나 이미 적절한 데이터가 있는 경우 즉시 반환할 수 있습니다. 모든 흐름에서 통합업체가 AuthenticationResponse를 생성합니다. 이 응답은 서명되어 Google로 다시 전송됩니다.
모바일 및 데스크톱 웹사이트는 WebRedirect Authentication API 사양을 따라야 하며 Android 앱 흐름은 Android Authentication API 사양을 따라야 합니다.
통합자는 Android APK 솔루션을 구현하여 사용자를 인증해야 합니다. 이 인증은 모달리티는 다르지만 용도는 웹 인증에서 제공하는 인증과 동일합니다.
사용자가 Android 활동을 통해 결제 통합업체로 인증합니다. 인증 인텐트는 계정 연결 중 및 사용자 챌린지를 위해 호출됩니다. 인증 중에 Android가 백그라운드에서 Play를 종료하지 않도록 하려면 통합자는 활동 테마에 다음을 포함해야 합니다.
<item name="android:windowIsTranslucent">true</item>
메서드 정의
인텐트에는 다음 속성이 있어야 합니다.
메서드 속성 | |
---|---|
작업 |
com.google.android.payments.standard.AUTHENTICATE_V1 |
카테고리 | android.intent.category.DEFAULT |
요청
필드 | |
---|---|
gspAuthenticationRequest
|
AuthenticationRequest
인증 요청입니다. |
gspAssociationId
|
string
이 ID가 있는 경우 여기에는 통합업체가 보안 질문을 하는 사용자의 사용자 인증 정보를 찾는 데 사용하는 식별자가 포함됩니다. 이 속성이 없으면 사용자는 계정 ID를 변경할 수 있습니다. |
응답
사용자가 인증을 완료하면 애플리케이션이 결과 인텐트를 Google로 다시 전송해야 합니다. 인증에 성공하면 인텐트를 만들고 암호화된 인코딩된 gspAuthenticationResponse를 추가 항목으로 추가합니다. 다음으로, 활동 결과를 적절한 결과 코드로 설정합니다.
...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();
결과
필드 | |||||||
---|---|---|---|---|---|---|---|
결과 |
int
|
Extras
필드 | |
---|---|
gspAuthenticationResponse |
AuthenticationResponse
인증 응답입니다. 인코딩된 값은 1KB를 초과할 수 없습니다. |
기타 활동 요구사항
위에서 언급한 AUTHENTICATE_V1
작업을 지원하는 활동은 API 호출자가 Google이 서명한 애플리케이션에서만 발생하는지도 확인해야 합니다.
이렇게 하면 다른 앱에서 내 활동을 호출하고 ID 토큰을 검색하지 못하게 할 수 있습니다. Activity 구현 내에서 super.onCreate
바로 뒤에 제공된 StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
를 사용하면 됩니다.
다음은 샘플입니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
authenticate
흐름 내에서 호출된 모든 활동은 windowIsTranslucent=true
가 있는 활동 테마를 제공해야 합니다. 이 작업은 AndroidManifest android:theme 속성을 사용하여 완료해야 하며 Context.setTheme()
을 사용하면 안 됩니다.
프로그래매틱 방식으로 테마 설정이 창 반투명도에 올바르게 작동하지 않습니다. Google은 첫 번째로 실행된 활동이 이 패턴을 따르도록 강제하지만 마찬가지로 실행되는 모든 하위 활동도 이 패턴을 따라야 합니다. 그렇지 않은 경우 서드 파티 개발자의 구매가 작동하지 않을 수 있습니다.