Android APK Authentication API

احراز هویت می تواند در سه محیط مختلف انجام شود:

  • برنامه اندروید یکپارچه کننده پرداخت
  • وب سایت موبایل یکپارچه ساز پرداخت
  • وب سایت دسکتاپ یکپارچه کننده پرداخت

صرف‌نظر از جریان، Google تعامل کاربر را به نرم‌افزار ادغام‌کننده پرداخت واگذار می‌کند. یکپارچه‌ساز پرداخت می‌تواند انتخاب کند که یک رابط کاربری را به کاربر نشان دهد یا اگر قبلاً داده‌های مناسب را داشته باشد، بلافاصله به کاربر بازگرداند. همه جریان‌ها منجر به تولید یک AuthenticationResponse توسط یکپارچه‌ساز می‌شوند. این پاسخ امضا شده و به Google ارسال می شود.

وب سایت های تلفن همراه و دسکتاپ باید از مشخصات API احراز هویت WebRedirect پیروی کنند، در حالی که جریان برنامه Android باید از مشخصات API احراز هویت Android پیروی کند.

یکپارچه‌سازها باید یک راه‌حل Android APK را برای احراز هویت کاربران پیاده‌سازی کنند. این احراز هویت یک روش متفاوت است، اما همان هدفی است که احراز هویت ارائه شده توسط تأیید اعتبار وب است.

کاربر با یکپارچه‌ساز پرداخت از طریق یک Android Activity احراز هویت می‌کند. هدف احراز هویت در طول ارتباط حساب و برای چالش های کاربر فراخوانی می شود. برای جلوگیری از خاتمه Android Play در پس‌زمینه در حین احراز هویت، ادغام‌کننده باید موارد زیر را در موضوع فعالیت لحاظ کند.

<item name="android:windowIsTranslucent">true</item>

تعریف روش

هدف باید این ویژگی ها را داشته باشد:

خواص روش
عمل com.google.android.payments.standard.AUTHENTICATE_V1
دسته بندی android.intent.category.DEFAULT

درخواست

زمینه های
gspAuthenticationRequest AuthenticationRequest

درخواست احراز هویت

gspAssociationId string

در صورت وجود، این شامل یک شناسه است که ادغام کننده برای جستجوی اعتبار کاربری که به چالش کشیده شده است استفاده می کند. اگر این وجود نداشته باشد، کاربر این گزینه را دارد که شناسه حساب را تغییر دهد.

واکنش

پس از اینکه کاربر احراز هویت را کامل کرد، برنامه شما باید یک هدف نتیجه را به Google ارسال کند. اگر احراز هویت موفقیت آمیز بود، یک intent ایجاد کنید و gspAuthenticationResponse رمزگذاری شده را به عنوان یک اضافی اضافه کنید. در مرحله بعد، نتیجه فعالیت را روی کد نتیجه مناسب تنظیم کنید.

...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();

نتیجه

زمینه های
نتیجه int

Activity.RESULT_OK
احراز هویت با موفقیت انجام شد.
Activity.RESULT_CANCELED کاربر جریان را به صورت دستی لغو کرد و جریان باید قطع شود.
Activity.RESULT_FIRST_USER احراز هویت به دلیلی مهلک انجام نشد و جریان باید متوقف شود. سرور اینترنت اکسپلورر در هنگام ورود به سیستم پاسخ HTTP 500 را برگرداند.

موارد اضافی

زمینه های
gspAuthenticationResponse AuthenticationResponse

پاسخ احراز هویت این مقدار کدگذاری شده نباید از 1 کیلوبایت تجاوز کند.

سایر الزامات فعالیت

فعالیتی که از عملکرد AUTHENTICATE_V1 ذکر شده در بالا پشتیبانی می‌کند، باید بررسی کند که تماس‌گیرندگان API فقط از برنامه‌های دارای امضای Google باشند. این به جلوگیری از تلاش سایر برنامه‌ها برای فراخوانی فعالیت شما و بازیابی نشانه‌های هویت کمک می‌کند. این را می توان با استفاده از StandardPaymentUtils.verifyCallingActivityIsGoogleSigned ارائه شده درست بعد از super.onCreate در اجرای Activity خود انجام داد.

در اینجا یک نمونه است:


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);

  ....
}

همه فعالیت‌هایی که در جریان authenticate فراخوانی می‌شوند باید یک موضوع فعالیت ارائه دهند که دارای windowIsTranslucent=true باشد. این کار باید با ویژگی AndroidManifest android:theme و بدون استفاده از Context.setTheme() انجام شود. از نظر برنامه‌ریزی، تنظیم موضوع برای شفافیت پنجره به درستی کار نمی‌کند. Google اعمال می کند که اولین فعالیت راه اندازی شده از این الگو پیروی کند، اما هر فعالیت فرعی که راه اندازی می شود نیز باید از این الگو پیروی کند. اگر نه، ممکن است خرید از توسعه‌دهندگان شخص ثالث کارساز نباشد.