【问题标题】:Truecaller android sdk Error Code 3Truecaller android sdk 错误代码 3
【发布时间】:2017-08-31 20:56:33
【问题描述】:

我正在尝试在我的一个个人应用程序上实现用于登录/注册的 Truecaller android-SDK。我从 truecaller 收到了合作伙伴密钥,以便在我的应用程序中实现它。按下“使用 truecaller 自动填充”时发生错误,在“public void onFailureProfileShared()”中的“trueError.getErrorType()”上返回“错误代码 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() + " ");
}
}

【问题讨论】:

    标签: java android sdk


    【解决方案1】:

    这里是所有 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"/>
    

    【讨论】:

    • 是的,我从 Truecaller 本身收到并已添加到清单中的合作伙伴密钥。
    • 在这种情况下,签名很可能不匹配。您是否确保使用与您提交给 Truecaller 的应用程序相同的签名密钥?此外,Android Studio 可能会使用默认调试证书而不是您自己的来签署您的调试应用程序。你可以看看this answer 来解决这个问题。
    • 抱歉,我出站了。假设我的项目是“abc”,我在创建签名 apk 时为“abc”生成了一个密钥为“abc.jks”。我使用 .jks 文件在密钥位置文件夹中使用:'keytool -list -v -keystore abc.jks' 生成 SHA1 指纹。向 Truecaller 提供了相同的密钥,而我获得了不同的合作伙伴密钥。还是同样的错误:3
    • 我在第一次尝试时也尝试过使用 Debug 键.. 仍然没有运气:(
    • 此时我无法确定发生了什么,但以下是 Truecaller 向其服务器发送的有关您的应用程序的所有信息(取自反编译的 Truecaller 应用程序): putString("PARTNERINFO_TRUESDK_VERSION", this. truesdkVersion); putString("PARTNERINFO_PARTNER_KEY", this.partnerKey); putString("PARTNERINFO_PACKAGE_NAME", this.packageName); putString("PARTNERINFO_APP_FINGERPRINT", this.appFingerprint); putString("PARTNERINFO_REQ_NONCE", this.reqNonce);如果您无法解决此问题,您可能应该联系 Truecaller 支持。
    【解决方案2】:

    终于得到了帮助。感谢@Sayan 让我更进一步,感谢@qualverse 了解“错误代码”。

    Truecaller 需要您提供 SHA1,并为您提供 PartnerKey。我发现你的应用是 release 还是 debug 并不重要。如果 PartnerKey 是使用 debug SHA1 密钥生成的,那么您必须使用 debug variant 构建应用程序,如果 PartnerKey 是使用 released SHA1 生成的,那么您必须使用 released SHA1 构建应用程序strong>已发布变体。

    下面的截图有助于理解密钥类型:

    可以在 Truecaller 仪表板上为这两个变体输入条目,以同时处理这两个变体。始终确保正确签署发布变体。

    【讨论】:

      【解决方案3】:

      将您的构建变体调试更改为发布,PartnerKey 使用发布的 SHA1 生成,然后构建应用程序。 我遇到了同样的问题,每次都收到错误代码3。 更改调试以发布解决我的问题。

      【讨论】:

      • 刚刚尝试使用 app-release.apk 仍然是相同的错误代码 3
      • 谢谢Sayan,我现在可以使用了。实际上问题出在密钥上。我的 Partnerkey 是使用 Debug SHA1 生成的,并且正在使用已发布的 apk 进行测试。
      • 抱歉延迟评论..忘了说发布 SHA1....很高兴终于知道您的合作伙伴密钥工作正常。也更新我的帖子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 2020-03-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多