Android СМС-верификация APi - PullRequest
       74

Android СМС-верификация APi

0 голосов
/ 25 марта 2020

Я разработал приложение с несколькими вариантами сборки, такими как dev, test, prod, поэтому, когда я использую API проверки смс, я могу читать смс только в режиме prod, но не в другом режиме, я убедился, что ха sh то, что отправляется на сервер, отличается для другой разновидности сборки, и сервер также отправляет тот же га sh в смс, который отправляется приложением, но проблема в том, что приемник API проверки смс способен читать смс для расширения сборки Prod, а не для другого варианта сборки.

Код варианта сборки

flavorDimensions "version"

productFlavors {

    gamma {
        dimension "version"
        applicationId "packagename.test"
        versionNameSuffix "-test"
    }

    api2 {
        dimension "version"
        applicationId "packagename.dev"
        versionNameSuffix "-dev"
    }
    prod {
        dimension "version"
        applicationId "packagename"
    }
}

код для генерации ха sh

   public ArrayList<String> getAppSignatures() {
    ArrayList<String> appSignaturesHashs = new ArrayList<>();
try {
        // Get all package details
        String packageName = getPackageName();
        PackageManager packageManager = getPackageManager();
        Signature[] signatures = packageManager.getPackageInfo(packageName,
                PackageManager.GET_SIGNATURES).signatures;

        for (Signature signature : signatures) {
            String hash = hash(packageName, signature.toCharsString());
            if (hash != null) {
                appSignaturesHashs.add(String.format("%s", hash));
            }
        }
    } catch (Exception e) {
        Log.e(TAG, "Package not found", e);
    }
    return appSignaturesHashs;
}

@TargetApi(19)
private static String hash(String packageName, String signature) {
    String appInfo = packageName + " " + signature;
    try {
        MessageDigest messageDigest = MessageDigest.getInstance(HASH_TYPE);
        messageDigest.update(appInfo.getBytes(StandardCharsets.UTF_8));
        byte[] hashSignature = messageDigest.digest();

        // truncated into NUM_HASHED_BYTES
        hashSignature = Arrays.copyOfRange(hashSignature, 0, NUM_HASHED_BYTES);
        // encode into Base64
        String base64Hash = Base64.encodeToString(hashSignature, Base64.NO_PADDING | Base64.NO_WRAP);
        base64Hash = base64Hash.substring(0, NUM_BASE64_CHAR);

        return base64Hash;
    } catch (NoSuchAlgorithmException e) {
        Log.e(TAG, "No Such Algorithm Exception", e);
    }
    return null;
}

Любое предложение или помощь будут будь великим.

...