我正试图通过REST为我的应用程序实现。https://cloud.google.com/vision/docs/pdf
是否有任何例子或建议如何这样做?
文档指出,它们需要服务帐户令牌,但无法找到从iOS应用程序端获取服务帐户令牌的任何示例。我尝试过通过GTMAppAuth,但是得到了403个错误
我能够从我的mac机器上生成这个令牌,并且所有的机器都在工作,但是token有限的生命时间,在3-4个小时之后就会消失。
发布于 2018-12-28 07:24:40
我自己想出来做了这件事。文档:https://developers.google.com/identity/protocols/OAuth2ServiceAccount#jwt-auth
1)您需要创建服务帐户,下载p12或JSON文件。JSON文件包含私钥和公共证书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请求
希望它能对将来的人有所帮助
发布于 2018-12-26 12:26:43
首先你需要一个更多的记号..。你可以按照这一页上的说明.
该标记不会过期,您可以将其实现到代码中.
以下是关于如何在Swift中向请求添加更多令牌的基本版本.所有其他内容都以数据格式的JSON形式传递到"body“参数
这个链接将向您展示如何为您对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方法,以更新您的应用程序并获得新的令牌,您可以按照下面googles说明页面上的说明进行操作:
https://developers.google.com/identity/sign-in/ios/offline-access
https://stackoverflow.com/questions/53931530
复制相似问题