Appwrite集成TextMagic短信验证失败,报strlen类型错误
问题分析与解决方案
错误根源
从日志的任务数据可见"project":null,结合栈追踪中的strlen(): Argument #1 ($str) must be of type string, array given,核心问题是短信任务未正确关联Appwrite项目,导致TextMagic适配器构造请求时出现参数类型错误。虽用户能正常创建,但消息任务缺失项目上下文,引发参数处理失败。
修复步骤
- 确认客户端项目ID配置
检查_init()方法,确保Appwrite客户端正确设置项目ID,这是短信任务关联项目的核心:void _init() { account = Account(Client() .setEndpoint('https://你的Appwrite端点/v1') .setProject('你的项目ID') // 必须填写控制台获取的项目ID .setSelfSigned(status: true)); // 仅本地开发环境使用,生产环境移除 } - 升级Flutter SDK版本
旧版Appwrite Flutter SDK可能存在createPhoneSession方法未正确传递项目上下文的bug,建议升级到最新稳定版:flutter pub upgrade appwrite - 验证服务端版本
若客户端配置无误,尝试将Appwrite服务器升级到最新版本,部分旧版本存在消息任务处理的逻辑漏洞。 - 核对.env配置
确保服务端.env文件中除TEXTMAGIC_USERNAME和TEXTMAGIC_API_KEY外,APPWRITE_PROJECT_ID也已正确配置(客户端项目ID优先级更高,双重验证避免遗漏)。
额外排查
若修复后仍报错,可在createPhoneSession调用前打印客户端项目ID配置,确认是否正确传递:
print('当前客户端项目ID: ${account.client?.project}');
内容的提问来源于stack exchange,提问作者nb13
相关产品推荐
相关产品推荐

