2017-07-28 2 views
11

Ich versuche, das Truecaller android-SDK für die Anmeldung/Anmeldung auf einer meiner persönlichen App zu implementieren. Ich habe den Partnerschlüssel von truecaller erhalten, um ihn in meiner App zu implementieren. Fehler beim Drücken von "Autofill with truecaller" gibt den 'Fehlercode 3' für 'trueError.getErrorType()' in 'public void onFailureProfileShared()' zurück. Ich kann die Methode zur Beschreibung des Fehlers nicht finden. Kann jemand diesen Fehler beheben?TrueCaller android sdk Fehlercode 3

Meine Implementierung:

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() + " "); 
} 
} 

Antwort

1

Endlich hat es funktioniert mit hilft. Danke an @Sayan dafür, dass du mir einen Schritt näher gekommen bist und @qualled um die 'Fehler-Codes' zu verstehen.

Truecaller erfordert SHA1 von Ihnen und geben Ihnen wieder mit PartnerKey. Was ich herausgefunden habe ist, dass es egal ist, ob deine App Release oder debug ist. Wenn PartnerKey mit Debug-SHA1 Schlüssel generiert wird, dann müssen Sie App mit Debug-Variante bauen und wenn PartnerKey mit erzeugt wird SHA1 freigegeben dann App bauen mit freigegeben Variante.

Im Folgenden Screenshot wird helfen, die Schlüsselart für das Verständnis:

enter image description here

Eine Einträge für beide Varianten auf Truecaller Armaturenbrett machen können gleichzeitig auf beiden Variante zu arbeiten. Achten Sie immer darauf, die Release-Variante ordnungsgemäß zu signieren.

8

Hier ist die Liste aller von der Truecaller Fehlercodes:

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; 

Diese Codes sind statische Mitglieder der TrueError Klasse, so dass Sie auf sie zugreifen können so:

switch (trueError.getErrorType()) { 

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

In Ihrem Fall ist der Fehler, den Sie erhalten, der Fehlercode 3, ERROR_TYPE_UNAUTHORIZED_PARTNER. Haben Sie sichergestellt, dass Sie den Partnerschlüssel erhalten, und fügen Sie diese Zeile in Ihrem AndroidManifest.xml hinzu?

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

Ja, der Partnerschlüssel, den ich vom Truecaller selbst erhalten und bereits in Manifest hinzugefügt habe. –

+0

In diesem Fall stimmen die Signaturen wahrscheinlich nicht überein. Haben Sie sichergestellt, dass Sie den gleichen Signaturschlüssel für die App verwenden wie für TrueCaller? Außerdem kann Android Studio Ihre Debug-App mit dem Standard-Debug-Zertifikat anstelle Ihrer eigenen signieren. Sie können [diese Antwort] (https://stackoverflow.com/questions/17189076/what-is-the-äquivalent-of-eclipse-custom-debug-keystore-in-android-studio) betrachten, um das zu beheben . – qualverse

+0

Entschuldigung, ich war außerhalb der Station. Sagen wir, mein Projekt ist 'abc', ich habe einen Schlüssel für 'abc' als 'abc.jks' generiert, während ich eine signierte apk erstelle. Ich habe das benutzt.jks-Datei zum Generieren des SHA1-Fingerabdrucks mithilfe von: 'keytool -list -v -keystore abc.jks' im Schlüsselspeicherordner. Derselbe Schlüssel wurde an Truecaller übergeben und ich erhielt einen anderen Partnerschlüssel. Immer noch der gleiche Fehler: 3 –

3

Änderung Ihrer Build-Variante Debug zu lösen und PartnerKey erzeugt mit freigegeben SHA1 dann App bauen. Ich habe das gleiche Problem, jedes Mal bekommen Fehlercode 3. Debug ändern, um mein Problem zu lösen.

+0

Gerade jetzt versucht mit app-release.apk und immer noch gleichen Fehlercode 3 –

+0

Danke Sayan, ich habe es funktioniert jetzt. Eigentlich war das Problem mit dem Schlüssel .. Ich hatte meinen Partnerschlüssel mit dem Debug SHA1 generiert und testete mit der freigegebenen APK. –

+0

Entschuldigung für Verspätung Kommentar .. vergessen, über Freigabe SHA1 zu sagen .... toll zu wissen, endlich Ihre Partner-Taste funktioniert ordnungsgemäß.Update meine Post auch. –