ios - Google 翻译 api,来自此 ios 客户端应用程序的请求\u003cempty\u003e 被阻止

标签 ios swift google-translate

我通过调用翻译 API 收到此错误消息“来自此 ios 客户端应用程序\u003cempty\u003e 的请求被阻止”,我已设置为 ios 应用程序和我在网络上的 bundle ID。请帮忙 enter image description here

    let TRANSLATE_API = "https://translation.googleapis.com/language/translate/v2"
    let GOOGLE_CLOUD_API_KEY = "<API_KEY>"

    let urlParams:[String : Any] = [
        "target": target,
        "q": textToTranslate,
        "key": GOOGLE_CLOUD_API_KEY,
        "source": source]

    let bundleIdentifier = Bundle.main.bundleIdentifier!
    let headers:[String : String] = ["Content-Type": "application/json", "X-Ios-Bundle-Identifier": bundleIdentifier]

    // Fetch Request
    let urlString = TRANSLATE_API

    // Fetch Request
    Alamofire.request(urlString, parameters: urlParams)
        .validate()
        .responseJSON { (response) in

            switch(response.result) {
            case .success(_):
                if response.result.error != nil {
                    completion(false, response.result.error! as! String)
                }

                if let json = response.result.value as? [String: Any] {
                    if let data = json["data"] as? [String: Any] {
                        if let translations = data["translations"] as? [[String:Any]] {
                            let translatedTextDict = translations[0]
                            if let result = translatedTextDict["translatedText"] as? String {
                                completion(true, result)
                            }
                        }
                    }
                }
                break

            case .failure(_):
                completion(false, (response.result.error?.localizedDescription)!)
                break
            }
    }

最佳答案

我也遇到了同样的问题,经过调试,发现了问题所在,

如果您将 API key 添加到 URL,则该 key 有效,因此请将您的请求更改为:

let BASE_URL = URL(string: "https://translation.googleapis.com/language/translate/v2")!
Alamofire.request(BASE_URL, method: .post, parameters: params, encoding: URLEncoding.default, headers: nil)

我不知道为什么删除标题“内容类型”会影响它。

还有一个提示:永远不要公开共享您的 key ,也不要将其放在代码中,尤其是当您将其托管在公共(public)存储库上时。将其放入 gitignored 文件中并在应用程序启动时读取它,或设置环境变量。

如果您有后续问题,请告诉我。

关于ios - Google 翻译 api,来自此 ios 客户端应用程序的请求\u003cempty\u003e 被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47935277/

相关文章:

ios - 如何使用 MVVM 和 RxSwift 事件在 UIViewController 及其子 UIView 之间进行通信?

iOS 应用程序似乎认为其宽度是实际宽度的一半

ios - 如何在标签和图像之间创建碰撞检测

javascript - 我想在一个文本框中输入英语,并希望将阿拉伯语文本转换为另一种文本

ios - NSAttributedString 不显示段落缩进

ios - iOS 8自定义键盘旋转处理为横向键盘加载另一个Xib文件

ios - 重新加载 UITableView 除了它的一部分

python - 如何使用 googletrans 在 Python 中翻译 Pandas 系列?

python - 如何将 HTTP header 内容长度添加到 Google Translate API 调用?

ios - 如何在iPhone真机上打开数据库sqlite文件?