如何使用AT指令在ESP8266上获取Firebase的idToken(认证密钥)
解决ESP8266(ESP01)通过AT指令获取Firebase idToken的问题
你的核心错误是在AT+CIPSTART命令中传入了完整URL而非纯域名,谷歌身份工具API的连接和请求需要分两步走:先建立SSL连接到服务器域名,再发送标准HTTP POST请求获取token。
正确操作步骤:
1. 建立SSL连接到身份认证服务器
AT+CIPSTART仅需传入服务器域名,不能带https://、路径或参数,正确命令:
AT+CIPSTART="SSL","identitytoolkit.googleapis.com",443
收到CONNECT OK提示表示连接成功。
2. 构造并发送POST请求获取idToken
你需要构造符合HTTP规范的POST请求,将认证参数放在请求体中,示例如下(替换<API_KEY>、<邮箱>、<密码>为你的实际信息):
POST /v1/accounts:signInWithPassword?key=<API_KEY> HTTP/1.1 Host: identitytoolkit.googleapis.com Content-Type: application/x-www-form-urlencoded Content-Length: 63 // 替换为请求体的实际字节数 email=<邮箱>&password=<密码>&returnSecureToken=true
3. 通过AT指令发送请求
- 先执行
AT+CIPSEND=<总长度>,这里的<总长度>是上述完整HTTP请求的总字节数(包括所有换行符\r\n)。 - 当串口出现
>提示符后,粘贴完整的HTTP请求内容并发送。
4. 解析响应获取idToken
服务器返回的JSON响应中,idToken字段即为所需的认证密钥。之后你就可以用这个token,在Firebase数据库的写入请求中添加?auth=<idToken>参数,完成带认证的写入操作。
额外注意事项:
- 确保ESP8266的AT固件支持SSL(多数新版固件已支持),若连接失败可尝试升级固件。
- HTTP请求中的换行必须用
\r\n(CRLF),否则服务器可能无法正确解析。 Content-Length必须准确匹配请求体的字节数,否则请求会失败。
内容的提问来源于stack exchange,提问作者saif
相关产品推荐
相关产品推荐

