Android APK 인증 API

인증은 세 가지 환경에서 발생할 수 있습니다.

  • 결제 통합업체의 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

Activity.RESULT_OK
인증이 완료되었습니다.
Activity.RESULT_CANCELED 사용자가 흐름을 수동으로 취소했으며 흐름이 중단되어야 합니다.
Activity.RESULT_FIRST_USER 치명적인 이유로 인증에 실패했으며 흐름을 중단해야 합니다. IE 서버가 로그인 시 HTTP 500 응답을 반환했습니다.

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은 첫 번째로 실행된 활동이 이 패턴을 따르도록 강제하지만 마찬가지로 실행되는 모든 하위 활동도 이 패턴을 따라야 합니다. 그렇지 않은 경우 서드 파티 개발자의 구매가 작동하지 않을 수 있습니다.