Play Integrity API hata kodlarını işleme

Uygulamanız Play Integrity API isteğinde bulunur ve çağrı başarısız olursa uygulamanız bir hata kodu alır. Bu hatalar, zayıf ağ bağlantısı gibi çevresel sorunlar, API entegrasyonunuzla ilgili sorunlar veya kötü amaçlı etkinlikler ve etkin saldırılar gibi çeşitli nedenlerle ortaya çıkabilir. Döndürülen hata kodunun türü, isteğin türüne bağlıdır:

Yeniden deneme stratejileri

Arka planda gerçekleşen ve kullanıcı oturumdayken kullanıcı deneyimini etkilemeyen Play Integrity işlemleri için eksponansiyel geri yükleme kullanın.

Örneğin, bu işlemi arka planda gerçekleştirebileceğiniz ve hata oluşması durumunda onayın anında gerçekleşmesi gerekmediği için yeni satın alma işlemlerini onaylarken bu yöntemi uygulayabilirsiniz.

İlk başarısız denemeden sonra, yeniden denemeden önce 5 saniyelik bir gecikmeyle başlayın.

Çıkış koşulu olarak maksimum deneme sayısına sahip bir yeniden deneme stratejisi uygulayın ve her seferinde üstel olarak artan bir gecikme (10 sn, 20 sn) kullanın.

Bu yeniden deneme girişimlerini gerçekleştirirken ağ bağlantısını kontrol edin ve cihaza aşırı yükleme yapmayın.

Üç yeniden denemeden sonra hata görmeye devam ederseniz sonucu, istemcinin tüm bütünlük kontrollerinde başarısız olduğu şeklinde değerlendirin. Hata, aşırı yüklenmiş bir cihaz, ağ bağlantısı sorunları veya bir saldırganın girişimi dahil ancak bunlarla sınırlı olmamak üzere çeşitli nedenlerden kaynaklanabilir.

Java kitaplığı için hata kodu değerleri

IntegrityErrorCode StandardIntegrityErrorCode
-1 API_NOT_AVAILABLE API_NOT_AVAILABLE
-2 PLAY_STORE_NOT_FOUND PLAY_STORE_NOT_FOUND
-3 NETWORK_ERROR NETWORK_ERROR
-4 PLAY_STORE_ACCOUNT_NOT_FOUND
-5 APP_NOT_INSTALLED APP_NOT_INSTALLED
-6 PLAY_SERVICES_NOT_FOUND PLAY_SERVICES_NOT_FOUND
-7 APP_UID_MISMATCH APP_UID_MISMATCH
-8 TOO_MANY_REQUESTS TOO_MANY_REQUESTS
-9 CANNOT_BIND_TO_SERVICE CANNOT_BIND_TO_SERVICE
-10 NONCE_TOO_SHORT
-11 NONCE_TOO_LONG
-12 GOOGLE_SERVER_UNAVAILABLE GOOGLE_SERVER_UNAVAILABLE
-13 NONCE_IS_NOT_BASE64
-14 PLAY_STORE_VERSION_OUTDATED PLAY_STORE_VERSION_OUTDATED
-15 PLAY_SERVICES_VERSION_OUTDATED PLAY_SERVICES_VERSION_OUTDATED
-16 CLOUD_PROJECT_NUMBER_IS_INVALID CLOUD_PROJECT_NUMBER_IS_INVALID
-17 CLIENT_TRANSIENT_ERROR REQUEST_HASH_TOO_LONG
-18 CLIENT_TRANSIENT_ERROR
-19 INTEGRITY_TOKEN_PROVIDER_INVALID
-100 INTERNAL_ERROR INTERNAL_ERROR

Yerel kitaplık için ek hata kodu değerleri

IntegrityErrorCode StandardIntegrityErrorCode
-100 INTEGRITY_INTERNAL_ERROR STANDARD_INTEGRITY_INTERNAL_ERROR
-101 INTEGRITY_INITIALIZATION_NEEDED STANDARD_INTEGRITY_INITIALIZATION_NEEDED
-102 INTEGRITY_INITIALIZATION_FAILED STANDARD_INTEGRITY_INITIALIZATION_FAILED
-103 INTEGRITY_INVALID_ARGUMENT STANDARD_INTEGRITY_INVALID_ARGUMENT

Yeniden deneyebileceğiniz hata kodları

Bu hatalar bazen geçici durumlardan kaynaklanır. Bu nedenle, çağrıyı yeniden denemeniz gerekir.

NETWORK_ERROR (Hata Kodu -3)

Bu hata, cihaz ile Play sistemleri arasındaki ağ bağlantısında bir sorun olduğunu gösterir.

Olası çözüm

  1. Kullanıcının ağ bağlantısı kurmasına ve onaylamasına yardımcı olan Google Play destekli bir deneyim başlatmak için GET_INTEGRITY veya GET_STRONG_INTEGRITY iletişim kutusunu kullanın.
  2. Kullanıcıdan ağ bağlantısını kontrol etmesini ve hatayı tetikleyen işleme bağlı olarak temel yeniden deneme veya eksponansiyel geri yükleme yöntemini kullanmasını isteyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için NETWORK_ERROR.

TOO_MANY_REQUESTS (Hata kodu -8)

Arama uygulaması, API'ye çok fazla istek gönderiyor ve kısıtlanmış veya uygulamanız günlük istek kotasını aşmış.

Olası çözüm

  1. Eksponansiyel geri yüklemeyle yeniden deneyin.
  2. Günlük maksimum istek sayınızı artırma isteğinde bulunma

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için TOO_MANY_REQUESTS.

GOOGLE_SERVER_UNAVAILABLE (Hata Kodu -12)

Bilinmeyen dahili Google sunucusu hatası.

Olası çözüm

Eksponansiyel geri yüklemeyle yeniden deneyin. Sürekli olarak başarısız oluyorsa hata bildiriminde bulunabilirsiniz.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için GOOGLE_SERVER_UNAVAILABLE.

CLIENT_TRANSIENT_ERROR (Hata Kodu -18)

İstemci cihazda geçici bir hata oluştu.

Standart API istekleri için bu özellik, Kotlin ve Java için Google Play Integrity API kitaplığının 1.3.0 sürümü, Unity için Google Play Integrity Eklentisi'nin 1.3.0 veya sonraki sürümleri ve Play Core Native SDK'nın 1.13.0 veya sonraki sürümlerinde desteklenir.

Olası çözüm

Eksponansiyel geri yüklemeyle yeniden deneyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için CLIENT_TRANSIENT_ERROR.

Not: Klasik API isteği kullanılırken raporlandığında döndürülen değer -17'dir.

INTERNAL_ERROR (Hata Kodu -100)

Bilinmeyen dahili hata.

Olası çözüm

Eksponansiyel geri yüklemeyle yeniden deneyin. Sürekli başarısız oluyorsa hata bildiriminde bulunabilirsiniz.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için INTERNAL_ERROR.

STANDARD_INTEGRITY_INTERNAL_ERROR (Hata Kodu -100)

Bilinmeyen dahili hata.

Olası çözüm

Eksponansiyel geri yüklemeyle yeniden deneyin. Sürekli başarısız oluyorsa hata bildiriminde bulunabilirsiniz.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için INTEGRITY_INTERNAL_ERROR bölümüne bakın.

STANDARD_INTEGRITY_INITIALIZATION_FAILED (Hata Kodu -102)

Standard Integrity API başlatılırken bir hata oluştu.

Olası çözüm

Eksponansiyel geri yüklemeyle yeniden deneyin. Sürekli başarısız oluyorsa hata bildiriminde bulunabilirsiniz.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için INTEGRITY_INITIALIZATION_FAILED bölümüne bakın.

Yeniden denenmeyecek hata kodları

Bu gibi durumlarda otomatik yeniden denemelerin işe yaraması pek olası değildir. Ancak kullanıcı, soruna neden olan durumu düzeltirse manuel olarak yeniden deneme işe yarayabilir. Örneğin, kullanıcı Play Store sürümünü desteklenen bir sürüme güncellerse ilk işlemin manuel olarak yeniden denenmesi işe yarayabilir.

API_NOT_AVAILABLE (Hata Kodu -1)

Cihazda yüklü Google Play Store sürümü eski olabilir ve Integrity API kullanılamayabilir. Başka bir olasılık da Integrity API'nin Google Play Console'da etkinleştirilmemiş olmasıdır.

Olası çözüm

  • Google Play Console'da Integrity API'nin etkinleştirildiğinden emin olun.
  • Kullanıcıdan Google Play Store'u güncellemesini isteyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için API_NOT_AVAILABLE bölümüne bakın.

PLAY_STORE_NOT_FOUND (Hata Kodu -2)

Cihazda resmi Google Play Store uygulaması bulunamadı.

Olası çözüm

Kullanıcıdan Google Play Store'u yüklemesini veya etkinleştirmesini isteyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için PLAY_STORE_NOT_FOUND bölümüne bakın.

PLAY_STORE_ACCOUNT_NOT_FOUND (Hata Kodu -4)

Not: Bu, yalnızca IntegrityErrorCode üzerinden klasik istek için raporlanır.

Cihazda Google Play Store hesabı bulunamadı. Play Integrity API'nin artık kimliği doğrulanmamış istekleri desteklediğini unutmayın. Bu hata kodu yalnızca desteklenmeyen eski Play Store sürümlerinde kullanılır.

Olası çözüm

Kullanıcıdan Google Play Store'u güncellemesini ve oturum açmasını isteyin.

APP_NOT_INSTALLED (Hata Kodu -5)

Arama uygulaması yüklü değil. Bir sorun var (muhtemelen bir saldırı).

Olası çözüm

İşlem yapılamaz. Sonucu, istemci tüm bütünlük kontrollerinde başarısız olmuş gibi değerlendirin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için APP_NOT_INSTALLED bölümüne bakın.

PLAY_SERVICES_NOT_FOUND (Hata Kodu -6)

Play Hizmetleri kullanılamıyor veya güncellenmesi gerekiyor.

Olası çözüm

  1. Kullanıcının Google Play Hizmetleri'ni yüklemesine, güncellemesine veya etkinleştirmesine yardımcı olan Google Play destekli bir deneyim başlatmak için GET_INTEGRITY veya GET_STRONG_INTEGRITY iletişim kutusunu kullanın.
  2. Kullanıcıdan Play Hizmetleri'ni yüklemesini, güncellemesini veya etkinleştirmesini isteyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için APP_NOT_INSTALLED bölümüne bakın.

APP_UID_MISMATCH (Hata Kodu -7)

Arama uygulaması UID'si (kullanıcı kimliği), Paket Yöneticisi'ndekiyle eşleşmiyor.

Olası çözüm

İşlem yapılamaz. Sonucu, istemci tüm bütünlük kontrollerinde başarısız olmuş gibi değerlendirin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için APP_UID_MISMATCH bölümüne bakın.

CANNOT_BIND_TO_SERVICE (Hata Kodu -9)

Google Play Store'daki hizmete bağlanılamadı. Bunun nedeni, cihazda eski bir Play Store sürümünün yüklü olması olabilir.

Olası çözüm

Kullanıcıdan Google Play Store'u güncellemesini isteyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için CANNOT_BIND_TO_SERVICE bölümüne bakın.

NONCE_TOO_SHORT (Hata Kodu -10)

Not: Bu, yalnızca IntegrityErrorCode üzerinden klasik istek için raporlanır.

Tek seferlik rastgele sayı çok kısa. Tek seferlik rastgele sayı, base64 kodlamasından önce en az 16 bayt olmalıdır.

Olası çözüm

Daha uzun bir tek seferlik rastgele sayı ile tekrar deneyin.

NONCE_TOO_LONG (Hata Kodu -11)

Not: Bu, yalnızca IntegrityErrorCode üzerinden klasik istek için raporlanır.

Tek seferlik rastgele sayı çok uzun. Tek seferlik rastgele sayı, Base64 kodlamasından önce 500 bayttan küçük olmalıdır.

Olası çözüm

Daha kısa bir tek seferlik rastgele sayı ile tekrar deneyin.

NONCE_IS_NOT_BASE64 (Hata Kodu -13)

Not: Bu, yalnızca IntegrityErrorCode üzerinden klasik istek için raporlanır.

Tek seferlik rastgele sayı, base64 web için güvenli sarmasız dize olarak kodlanmamış.

Olası çözüm

Doğru biçimde bir tek seferlik rastgele sayı ile tekrar deneyin.

PLAY_STORE_VERSION_OUTDATED (Hata Kodu -14)

Google Play Store uygulamasının güncellenmesi gerekiyor.

Olası çözüm

Kullanıcıdan Google Play Store'u güncellemesini isteyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için PLAY_STORE_VERSION_OUTDATED bölümüne bakın.

PLAY_SERVICES_VERSION_OUTDATED (Hata Kodu -15)

Google Play Hizmetleri'nin güncellenmesi gerekiyor.

Olası çözüm

  1. Kullanıcının Google Play Hizmetleri'ni güncellemesine yardımcı olan Google Play rehberliğinde bir deneyim başlatmak için GET_INTEGRITY veya GET_STRONG_INTEGRITY iletişim kutusunu kullanın.
  2. Kullanıcıdan Google Play Hizmetleri'ni güncellemesini isteyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için PLAY_SERVICES_VERSION_OUTDATED bölümüne bakın.

CLOUD_PROJECT_NUMBER_IS_INVALID (Hata Kodu -16)

Sağlanan bulut projesi numarası geçersiz.

Olası çözüm

Play Integrity API'yi etkinleştirdiğiniz Cloud projesinin Cloud proje numarasını kullanın.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istek için CLOUD_PROJECT_NUMBER_IS_INVALID bölümüne bakın.

REQUEST_HASH_TOO_LONG (Hata Kodu -17)

Not: Bu, yalnızca StandardIntegrityErrorCode üzerinden standart istek kullanıldığında raporlanır.

Sağlanan requestHash çok uzun. requestHash uzunluğu 500 karakterden az olmalıdır.

Olası çözüm

Daha kısa bir requestHash ile tekrar deneyin.

INTEGRITY_TOKEN_PROVIDER_INVALID (Hata Kodu -19)

Not: Bu, yalnızca StandardIntegrityErrorCode üzerinden standart istek için raporlanır.

StandardIntegrityTokenProvider artık geçerli değil. Bu durum, jeton sağlayıcının süresinin dolması veya kullanıcının Play Store uygulamasının verilerini temizleyerek jeton sağlayıcıyı kaldırması nedeniyle ortaya çıkabilir.

Bu hata kodu yalnızca Standart API istekleri için kullanılabilir. Kotlin ve Java programlama dilleri için kitaplık sürümü 1.3.0, Unity için Google Play Integrity eklentisi 1.3.0 veya sonraki sürümler ve Play Core Native SDK 1.13.0 veya sonraki sürümlerden itibaren desteklenir.

Olası çözüm

Yeni bir Bütünlük Jetonu Sağlayıcı isteyin.

STANDARD_INTEGRITY_INITIALIZATION_NEEDED (Hata Kodu -101)

StandardIntegrityManager başlatılmadı.

Olası çözüm

Önce StandardIntegrityManager_init() numaralı telefonu arayın.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için INTEGRITY_INITIALIZATION_NEEDED sayfasına bakın.

STANDARD_INTEGRITY_INVALID_ARGUMENT (Hata Kodu -103)

Standard Integrity API'ye geçersiz bağımsız değişken iletildi.

Olası çözüm

Doğru bağımsız değişkenle tekrar deneyin.

Aşağıdaki kaynakları da incelemenizi öneririz:

Klasik istekler için INTEGRITY_INVALID_ARGUMENT sayfasına bakın.