Flutter对接Google Vision API:认证文件位置与API Key替代方案
问题解决:Flutter中google_vision包无法读取assets里的auth.json及API Key替代方案
一、解决assets文件找不到的问题
Flutter的assets资源不能直接通过文件路径访问(打包后资源不在普通文件系统路径下),你当前用的GoogleVision.withJwt('assets/auth/auth.json')是针对Dart CLI的写法,在Flutter里需要先通过rootBundle读取文件内容:
- 先确认pubspec.yaml的assets配置正确(注意缩进格式):
flutter: assets: - assets/auth/auth.json
- 修改初始化代码,通过rootBundle读取文件内容后完成初始化:
import 'package:flutter/services.dart'; import 'package:google_vision/google_vision.dart'; // 初始化GoogleVision实例 final String jwtJson = await rootBundle.loadString('assets/auth/auth.json'); final googleVision = GoogleVision.fromJwtString(jwtJson);
二、API Key替代认证文件的可行性
google_vision包目前主要支持服务账号JWT认证,没有直接提供API Key初始化的方法。另外需要注意:在Flutter客户端应用中使用API Key存在安全风险(容易被逆向获取),Google官方也不建议在客户端暴露API Key。
如果一定要用API Key调用Vision API,你可以直接通过HTTP请求调用官方API接口,自行处理请求签名和响应解析;更安全的做法是搭建后端服务,由后端完成认证并调用Vision API,Flutter客户端只和自己的后端交互,避免敏感信息暴露。
内容的提问来源于stack exchange,提问作者Eran
相关产品推荐
相关产品推荐

