首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS应用程序中使用“服务帐户”实现Vision?

如何在iOS应用程序中使用“服务帐户”实现Vision?
EN

Stack Overflow用户
提问于 2018-12-26 11:34:44
回答 2查看 824关注 0票数 0

我正试图通过REST为我的应用程序实现。https://cloud.google.com/vision/docs/pdf

是否有任何例子或建议如何这样做?

文档指出,它们需要服务帐户令牌,但无法找到从iOS应用程序端获取服务帐户令牌的任何示例。我尝试过通过GTMAppAuth,但是得到了403个错误

我能够从我的mac机器上生成这个令牌,并且所有的机器都在工作,但是token有限的生命时间,在3-4个小时之后就会消失。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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请求

希望它能对将来的人有所帮助

票数 4
EN

Stack Overflow用户

发布于 2018-12-26 12:26:43

首先你需要一个更多的记号..。你可以按照这一页上的说明.

key

该标记不会过期,您可以将其实现到代码中.

以下是关于如何在Swift中向请求添加更多令牌的基本版本.所有其他内容都以数据格式的JSON形式传递到"body“参数

这个链接将向您展示如何为您对Vision的请求构建JSON .https://cloud.google.com/vision/docs/using-curl

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53931530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档