首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS应用swift 3中的谷歌翻译rest api错误403

iOS应用swift 3中的谷歌翻译rest api错误403
EN

Stack Overflow用户
提问于 2017-05-12 01:19:00
回答 3查看 940关注 0票数 1

有没有人能帮我解决这个问题?

我正在使用swift 3开发一个应用程序,并尝试将google translate api集成到我的iOS应用程序中,但rest api响应以下错误:

代码语言:javascript
复制
["error": {
code = 403;
errors = (
{
domain = global;
message = "Requests from this ios client application <empty> are blocked.";
reason = forbidden;
}
);
message = "Requests from this ios client application <empty> are blocked.";
status = "PERMISSION_DENIED";
}]
EN

回答 3

Stack Overflow用户

发布于 2017-05-12 01:30:44

你关注过吗:Implementing google translation api in swift 3 iOS

正如他提到的,你必须正确激活你的账户并注册,因为它似乎不再是一个免费的API。

票数 0
EN

Stack Overflow用户

发布于 2018-04-19 15:08:51

我认为这不是API免费使用的问题,我已经通过将"GET“方法api调用改为"POST”方法修复了这个问题,你可以试试-

代码语言:javascript
复制
open func translateTest(params: GoogleAITranslateParams, targetLanguage: String, callback:@escaping (_ translatedText:String) -> ()) {

    guard apiKey != "" else {
        return
    }

    var request = URLRequest(url: URL(string: "https://translation.googleapis.com/language/translate/v2?key=\(self.apiKey)")!)
    request.httpMethod = "POST"
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue(Bundle.main.bundleIdentifier ?? "", forHTTPHeaderField: "X-Ios-Bundle-Identifier")

        let jsonRequest = [
            "q": params.text,
            "source": "en",
            "target": targetLanguage,
            "format": "text"
            ] as [String : Any]

        if let jsonData = try? JSONSerialization.data(withJSONObject: jsonRequest, options: .prettyPrinted) {
            request.httpBody = jsonData
            let task: URLSessionDataTask = URLSession.shared.dataTask(with: request) { (data, response, error) in
                guard error == nil else {
                    print("Something went wrong: \(String(describing: error?.localizedDescription))")
                    return
                }

                if let httpResponse = response as? HTTPURLResponse {

                    guard httpResponse.statusCode == 200 else {
                        if let data = data {
                            print("Response [\(httpResponse.statusCode)] - \(data)")
                        }
                        return
                    }

                    do {
                        if let data = data {
                            if let json = try JSONSerialization.jsonObject(with: data, options:JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary {
                                if let jsonData = json["data"] as? [String : Any] {
                                    if let translations = jsonData["translations"] as? [NSDictionary] {
                                        if let translation = translations.first as? [String : Any] {
                                            if let translatedText = translation["translatedText"] as? String {
                                                callback(translatedText)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    } catch {
                        print("Serialization failed: \(error.localizedDescription)")
                    }
                }
            }

            task.resume()
        }
}
票数 0
EN

Stack Overflow用户

发布于 2021-05-12 15:19:10

缺少这一行是被阻止的主要原因,因为I API key to my iOS Bundle Identifier

代码语言:javascript
复制
request.addValue(Bundle.main.bundleIdentifier ?? "", forHTTPHeaderField: "X-Ios-Bundle-Identifier")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43921916

复制
相关文章

相似问题

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