2017-07-28 40 views
11

我想實現Truecaller android-SDK登錄/註冊我的個人應用程序之一。我收到了來自truecaller的合作伙伴密鑰,以便在我的應用中實施它。按'自動填充truecaller'會在'public void onFailureProfileShared()'的'trueError.getErrorType()'返回'錯誤代碼3'。我似乎無法找到描述錯誤的方法。 有沒有人碰巧知道解決這個錯誤?Truecaller android sdk錯誤代碼3

我的實現:

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

回答

1

終於得到它的幫助。感謝@Sayan讓我更近一步,並且@qualverse瞭解'錯誤代碼'。

Truecaller要求SHA1從你和提供回PartnerKey。我想到的是,如果你的應用程序是版本debug並不重要。如果PartnerKey與調試SHA1密鑰生成,那麼你必須用調試版本構建應用程序,如果PartnerKey與生成發佈SHA1然後建立與應用發佈變種

下面的截圖將有助於瞭解密鑰類型:

enter image description here

一個可以讓條目上Truecaller儀表盤都變型兩個變種同時工作。始終確保正確簽署發行版本。

8

這裏是所有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"/> 
+0

是的,我從Truecaller本身收到的合作伙伴密鑰已經添加到清單中。 –

+0

在這種情況下,簽名可能不匹配。你是否確定使用與提交給Truecaller的應用程序相同的簽名密鑰? 此外,Android工作室可能會使用默認調試證書而不是您自己的方式簽署您的調試應用程序。你可以看看[這個答案](https://stackoverflow.com/questions/17189076/what-is-the-equivalent-of-eclipse-custom-debug-keystore-in-android-studio)來解決這個問題。 – qualverse

+0

對不起,我離開了車站。假設我的項目是'abc',我在創建一個簽名的apk時爲'abc'生成了一個'abc.jks'的密鑰。我用了。jks文件以使用密鑰位置文件夾中的'keytool -list -v -keystore abc.jks'生成SHA1指紋。爲Truecaller提供了相同的密鑰,並且我獲得了不同的合作伙伴密鑰。仍然是同樣的錯誤:3 –

3

改變你的構建變量調試,釋放和PartnerKey與發佈SHA1然後構建應用程序產生的。 我面臨同樣的問題,每次得到錯誤代碼3. 更改調試發佈解決我的問題。

+0

剛剛嘗試使用app-release.apk並且仍然使用相同的錯誤代碼3 –

+0

感謝Sayan,我現在就開始工作。實際上問題出在關鍵之處..我用Debug SHA1生成了我的Partnerkey,並使用已發佈的apk進行測試。 –

+0

對於延遲評論感到遺憾..忘了說關於發佈SHA1 ....很高興終於知道你的合作伙伴的關鍵工作正常。更新我的帖子也。 –