如何在 iOS 应用中使用 'Service account' 实现 Vision API?
How to implement Vision API with 'Service account' in the iOS app?
我正在尝试通过 REST 为我的应用程序实现 Google 愿景 API。
https://cloud.google.com/vision/docs/pdf
是否有任何示例或建议如何执行此操作?
文档说他们需要服务帐户令牌,但找不到任何示例如何从 iOS 应用端获取服务帐户令牌。
我已经尝试通过 GTMAppAuth 但出现 403 错误
我能够从我的 mac machine 生成此令牌并且一切正常,但令牌的生命周期有限,3-4 小时后它会过期
首先您需要获得一个Bearer Token...您可以按照本页的说明进行操作...
https://cloud.google.com/vision/docs/auth#using_an_api_key
Bearer Token 不会过期,您可以将其实现到您的代码中...
关于如何在 Swift 中向您的请求添加 Bearer Token 的基本版本如下所示...所有其他内容作为 JSON 数据格式添加到 "body"参数
此 Link 将向您展示如何为您对 Vision 的请求构建 JSON... https://cloud.google.com/vision/docs/using-curl
class APIHandler {
private let API_TOKEN = "Your Token"
func requestVisionFromREST(body: Data, completion: @escaping (_ response: Data?)-> Void) {
let config = URLSessionConfiguration.default
var headers = [String:String]()
headers["Authorization"] = "Bearer \(API_TOKEN)"
config.httpAdditionalHeaders = headers
var urlRequest = URLRequest(url: URL(string: "YOUR URL")!)
urlRequest.httpMethod = "POST"
urlRequest.httpBody = body
URLSession(configuration: config).dataTask(with: urlRequest) { (data, response, error) in
completion(data)
}.resume()
}
}
编辑
如果您想使用 Google 登录而不是 OAuth 方法来重新验证您的应用并获取新的令牌,您可以按照以下 google 说明页面上的说明进行操作:
https://developers.google.com/identity/sign-in/ios/offline-access
我自己想出来并做到了。
文档:
https://developers.google.com/identity/protocols/OAuth2ServiceAccount#jwt-auth
1)您需要创建服务账号,下载p12或JSON文件。 JSON 文件包含私钥和 public 证书 url。您需要创建文本文件,私钥在顶部,证书在底部,运行 这个命令:
openssl pkcs12 -export -in file_name.txt -out file_name.p12
2)使用文档中描述的参数创建 jwt 令牌(对于 jwt,我使用了这个库:https://github.com/yourkarma/JWT)
3) 使用文档
中描述的参数向 https://www.googleapis.com/oauth2/v4/token 发出 POST 请求
希望对以后的人有所帮助
我正在尝试通过 REST 为我的应用程序实现 Google 愿景 API。 https://cloud.google.com/vision/docs/pdf
是否有任何示例或建议如何执行此操作?
文档说他们需要服务帐户令牌,但找不到任何示例如何从 iOS 应用端获取服务帐户令牌。 我已经尝试通过 GTMAppAuth 但出现 403 错误
我能够从我的 mac machine 生成此令牌并且一切正常,但令牌的生命周期有限,3-4 小时后它会过期
首先您需要获得一个Bearer Token...您可以按照本页的说明进行操作...
https://cloud.google.com/vision/docs/auth#using_an_api_key
Bearer Token 不会过期,您可以将其实现到您的代码中...
关于如何在 Swift 中向您的请求添加 Bearer Token 的基本版本如下所示...所有其他内容作为 JSON 数据格式添加到 "body"参数
此 Link 将向您展示如何为您对 Vision 的请求构建 JSON... https://cloud.google.com/vision/docs/using-curl
class APIHandler {
private let API_TOKEN = "Your Token"
func requestVisionFromREST(body: Data, completion: @escaping (_ response: Data?)-> Void) {
let config = URLSessionConfiguration.default
var headers = [String:String]()
headers["Authorization"] = "Bearer \(API_TOKEN)"
config.httpAdditionalHeaders = headers
var urlRequest = URLRequest(url: URL(string: "YOUR URL")!)
urlRequest.httpMethod = "POST"
urlRequest.httpBody = body
URLSession(configuration: config).dataTask(with: urlRequest) { (data, response, error) in
completion(data)
}.resume()
}
}
编辑
如果您想使用 Google 登录而不是 OAuth 方法来重新验证您的应用并获取新的令牌,您可以按照以下 google 说明页面上的说明进行操作:
https://developers.google.com/identity/sign-in/ios/offline-access
我自己想出来并做到了。 文档: https://developers.google.com/identity/protocols/OAuth2ServiceAccount#jwt-auth
1)您需要创建服务账号,下载p12或JSON文件。 JSON 文件包含私钥和 public 证书 url。您需要创建文本文件,私钥在顶部,证书在底部,运行 这个命令: openssl pkcs12 -export -in file_name.txt -out file_name.p12
2)使用文档中描述的参数创建 jwt 令牌(对于 jwt,我使用了这个库:https://github.com/yourkarma/JWT)
3) 使用文档
中描述的参数向 https://www.googleapis.com/oauth2/v4/token 发出 POST 请求希望对以后的人有所帮助