Подтвердить что ты не робот

Truecaller android sdk Код ошибки 3

Я пытаюсь реализовать Truecaller android-SDK для входа/регистрации в одном из моих личных приложений. Я получил ключ партнера от truecaller, чтобы реализовать его в своем приложении. Ошибка при нажатии "Автозаполнение с помощью truecaller" возвращает "Код ошибки 3" в "trueError.getErrorType()" в "public void onFailureProfileShared()". Кажется, я не могу найти способ описания ошибки. Кто-нибудь знает, чтобы исправить эту ошибку?

Моя реализация:

public class auth extends AppCompatActivity implements ITrueCallback{

private TrueButton truebutton = null;
private TrueClient trueClient = null;

private String mTruecallerRequestNonce = null;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_auth);
    truebutton = (TrueButton) findViewById(R.id.com_truecaller_android_sdk_truebutton);

    boolean isUsable = truebutton.isUsable();
    if(isUsable) {
        trueClient = new TrueClient(auth.this, auth.this);
        truebutton.setTrueClient(trueClient);
    }
    else {
        truebutton.setVisibility(View.GONE);
    }

    truebutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            trueClient.getTruecallerUserProfile(auth.this);
        }
    });
}


@Override
protected void onResume() {
    mTruecallerRequestNonce = trueClient.generateRequestNonce();
    super.onResume();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(trueClient!=null && trueClient.onActivityResult(requestCode, resultCode, data)) {
        return;
    }
    super.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onSuccesProfileShared(@NonNull TrueProfile trueProfile) {
    Toast.makeText(auth.this, trueProfile.firstName + " " + trueProfile.lastName, Toast.LENGTH_LONG).show();
}

@Override
public void onFailureProfileShared(@NonNull TrueError trueError) {
    Log.e("error code", trueError.getErrorType() + " ");
}
}
4b9b3361

Ответ 1

Наконец-то он работал с помощью. Спасибо @Sayan за то, что он взял меня на один шаг ближе и @qualverse понял "коды ошибок".

Truecaller требует от вас SHA1 и предоставит вам PartnerKey. Я понял, что это не имеет значения, если ваше приложение релиз или отладка. Если PartnerKey сгенерирован с помощью отладки SHA1, тогда вы должны создать приложение с вариантом отладки, а если PartnerKey сгенерирован с выпущенным SHA1, тогда создайте приложение с выпущенный вариант.

Ниже снимок экрана поможет понять тип ключа:

введите описание изображения здесь

Можно сделать записи для обоих вариантов на панели инструментов Truecaller для одновременной работы с обоими вариантами. Всегда убедитесь, что вы правильно подписали вариант выпуска.

Ответ 2

Вот список всех кодов ошибок TrueCaller:

ERROR_TYPE_INTERNAL = 0;
ERROR_TYPE_NETWORK = 1;
ERROR_TYPE_USER_DENIED = 2;
ERROR_TYPE_UNAUTHORIZED_PARTNER = 3;
ERROR_TYPE_UNAUTHORIZED_USER = 4;
ERROR_TYPE_TRUECALLER_CLOSED_UNEXPECTEDLY = 5;
ERROR_TYPE_TRUESDK_TOO_OLD = 6;
ERROR_TYPE_POSSIBLE_REQ_CODE_COLLISION = 7;
ERROR_TYPE_RESPONSE_SIGNATURE_MISSMATCH = 8;
ERROR_TYPE_REQUEST_NONCE_MISSMATCH = 9;

Эти коды являются статическими членами класса TrueError, поэтому вы можете обращаться к ним следующим образом:

switch (trueError.getErrorType()) {

    case TrueError.ERROR_TYPE_INTERNAL:
        // do something
        break;
    case TrueError.ERROR_TYPE_NETWORK:
        // do something else
        break;
    // etc.
}

В вашем случае ошибка, которую вы получаете, это код ошибки 3, ERROR_TYPE_UNAUTHORIZED_PARTNER. Убедитесь, что вы получили ключ партнера и добавили эту строку в свой AndroidManifest.xml?

<meta-data android:name="com.truecaller.android.sdk.PartnerKey" android:value="YOUR_PARTNER_KEY_HERE"/>

Ответ 3

измените версию debug debug для выпуска, и PartnerKey сгенерирован с выпущенным SHA1, затем создайте приложение. Я сталкиваюсь с одинаковой проблемой, каждый раз получая код ошибки 3. Измените debug, чтобы освободить решение моей проблемы.