为何Android端CloudOTP及Firebase OTP带额外代码而iOS端仅收OTP?
Firebase OTP跨端接收内容差异原因
造成Android、iOS两端接收OTP内容不一致的核心原因是双端系统的短信自动校验机制不同,Firebase针对不同平台做了差异化处理:
- Android端的额外附加码是Google SMS Retriever API的强制要求
为了实现不需要申请短信权限就能自动填充OTP的能力,Firebase在Android端默认适配了Google Play服务的SMS Retriever API。该机制要求短信末尾必须附加11位的应用专属哈希值,用来匹配目标应用,避免OTP被其他应用截获。Firebase发送短信时会主动给发往Android设备的短信追加该哈希值,SDK接收后也会返回完整的带哈希的短信内容,所以Android端会收到带额外代码的内容。 - iOS端无附加码是系统机制决定的
iOS的短信OTP自动识别是系统层面统一实现的,不需要应用在短信内添加专属标识,系统会自动提取验证码字段推送给对应应用。因此Firebase给iOS设备发送OTP短信时不会追加额外内容,最终收到的只有纯OTP代码。
如果不需要Android端的自动OTP填充能力,可以在Firebase控制台的电话认证配置页关闭SMS Retriever API校验选项,关闭后Android端收到的短信也会和iOS端保持一致,无附加代码。

内容的提问来源于stack exchange,提问作者geeta choubey
相关产品推荐
相关产品推荐

