Как реализовать Vision API с помощью «Сервисной учетной записи» в приложении iOS? - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь реализовать Google Vision API для моего приложения через REST.https://cloud.google.com/vision/docs/pdf

Есть ли примеры или предложения, как это сделать?

Документация говорит, что им требуется токен учетной записи службы, но не может найти примеров того, как получить токен учетной записи службы со стороны приложения iOS.Я пробовал через GTMAppAuth, но получая ошибку 403

Я смог сгенерировать этот токен с моего компьютера Mac, и все заработало, но срок действия токена ограничен, и через 3-4 часа он истекает

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Я разобрался и сделал это самостоятельно.Документация: https://developers.google.com/identity/protocols/OAuth2ServiceAccount#jwt-auth

1) Вам необходимо создать сервисную учетную запись, скачать файл p12 или JSON.Файл JSON содержит закрытый ключ и открытый URL-адрес сертификата.Вам нужно создать текстовый файл, в котором закрытый ключ вверху, сертификат внизу и выполнить эту команду: openssl pkcs12 -export -in имя_файла.txt -out имя_файла.p12

2) Создать токен jwt с параметрамикоторый описан в документации (для jwt я использовал эту библиотеку: https://github.com/yourkarma/JWT)

3) Сделайте POST-запрос к https://www.googleapis.com/oauth2/v4/token с параметрами, которые описаны в документации

Надеюсь, что это будетпомогите кому-нибудь в будущем

0 голосов
/ 26 декабря 2018

Сначала вам нужно получить токен на предъявителя ... Вы можете получить его, следуя инструкциям на этой странице ...

https://cloud.google.com/vision/docs/auth#using_an_api_key

Срок действия токена на предъявителя не истечет,Вы можете реализовать его в своем коде ...

Базовая версия о том, как добавить токен на предъявителя к вашему запросу в Swift, показана ниже ... Все остальные материалы идут как JSON в формате данных для "Параметр body "

Эта ссылка покажет вам, как создать JSON для вашего запроса к Vision ... 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()
    }

}

EDIT

Если вы хотите использовать вход в Google вместо метода OAuth, чтобы повторно использовать свои приложения и получить новый токен, вы можете следовать инструкциям на странице инструкций по Google:

https://developers.google.com/identity/sign-in/ios/offline-access

...