Android集成Tuya IoT SDK登录报错DECODE_ERROR与SING_VALIDATE_FALED求助
Tuya IoT Android集成登录报错排查求助
我已经完成Tuya IoT Android集成指南,但登录时出现以下错误日志:
Business {"errorCode":"DECODE_ERROR","success":false,"status":"error","errorMsg":"DECODE_ERROR"} 2023-10-15 12:29:47.768 15683-15782 Tuya com...an.stark.innovations.ecohogar D Business api: tuya.p.time.get {"t":1697390987134,"success":false,"errorCode":"SING_VALIDATE_FALED","status":"error","errorMsg":"La validación del permiso falló"}
我已经做了以下检查:
- 在manifest.xml中配置了AppKey和AppSecret
- 核对了包名并添加了SHA256
- 尝试升级SDK版本(build.gradle中原本写的是3.13.0,后来试过3.26.5),但错误仍存在
相关代码如下:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <uses-permission android:name="android.permission.INTERNET"/> <application tools:node="merge" android:name=".ThingSmartApp" tools:replace="android:allowBackup, android:supportsRtl" android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.EcoHogar" android:networkSecurityConfig="@xml/network_security_config" tools:targetApi="31"> <meta-data android:name="TUYA_SMART_APPKEY" android:value="*******" /> <meta-data android:name="TUYA_SMART_SECRET" android:value="********" /> <activity android:name=".userInterface.dashboard.DashboardActivity" > </activity> <activity android:name=".userInterface.MainActivity" android:exported="true" android:theme="@style/Theme.EcoHogar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
Application类代码
class ThingSmartApp : Application() { override fun onCreate() { super.onCreate() TuyaHomeSdk.setDebugMode(true) TuyaHomeSdk.init(this); } }
MainActivity代码
class MainActivity : ComponentActivity() { lateinit var contextData: Activity override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) contextData = this TuyaHomeSdk.getUserInstance().loginWithEmail("*", "***", "***", object : ILoginCallback { override fun onSuccess(user: User?) { Toast.makeText(contextData, "OK!!: ", Toast.LENGTH_SHORT) .show() } override fun onError(code: String?, error: String?) { Toast.makeText(contextData, "code: $code error!!: $error", Toast.LENGTH_SHORT) .show() } }) } }
build.gradle依赖配置
// The latest version of the Tuya Home: implementation 'com.tuya.smart:tuyasmart:3.13.0'
请问我哪里操作出错了?恳请帮助,谢谢!
排查方案
从错误码SING_VALIDATE_FALED(实际应为SIGN_VALIDATE_FAILED)和DECODE_ERROR来看,核心问题是签名验证失败,按以下优先级排查:
SHA256签名准确性
- 确认Tuya开发者平台提交的SHA256是当前测试包的正确哈希:
- 调试包和发布包的SHA256不同,用Android Studio默认调试签名的话,导出
debug.keystore的SHA256;自定义签名则用对应keystore的哈希。 - 导出命令:
keytool -list -v -keystore 你的keystore路径 -alias 别名
- 调试包和发布包的SHA256不同,用Android Studio默认调试签名的话,导出
- 注意不要混淆SHA1和SHA256,Tuya要求的是SHA256。
- 确认Tuya开发者平台提交的SHA256是当前测试包的正确哈希:
AppKey、AppSecret与包名匹配
- 检查Tuya平台上的应用包名是否和项目
applicationId完全一致(包名区分大小写)。 - 核对manifest里的
TUYA_SMART_APPKEY和TUYA_SMART_SECRET,确保和平台上的完全一致,无空格或字符缺失。
- 检查Tuya平台上的应用包名是否和项目
SDK版本与初始化
- 确认build.gradle里的SDK版本和实际依赖一致,同步项目后查看依赖列表,排除冲突。
- 初始化用Application上下文,你的代码里
TuyaHomeSdk.init(this)是正确的,无需修改。
登录参数正确性
loginWithEmail的三个参数是区域码、邮箱、密码,检查区域码是否匹配账号所属地区(比如西班牙是"34"),邮箱和密码是Tuya平台注册的合法账号,且已绑定到当前应用。
网络配置
- 检查
network_security_config.xml是否拦截了Tuya的域名访问,确保SDK能正常请求Tuya服务器。
- 检查
内容的提问来源于stack exchange,提问作者devjav
相关产品推荐
相关产品推荐

