【问题标题】:Google translate api, Requests from this ios client application \u003cempty\u003e are blockedGoogle 翻译 api,来自此 ios 客户端应用程序\u003cempty\u003e 的请求被阻止
【发布时间】:2017-12-22 02:48:33
【问题描述】:

我通过调用 translate api 收到此错误消息“来自此 ios 客户端应用程序 \u003cempty\u003e 的请求被阻止”,我已在网络上设置为 ios 应用程序和我的捆绑包 ID。请帮忙

    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
            }
    }

【问题讨论】:

    标签: ios swift google-translate


    【解决方案1】:

    我也遇到了同样的问题,调试后发现问题了,

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

    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)
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-10-07
      • 2018-10-02
      • 1970-01-01
      • 2022-01-03
      • 2020-07-05
      • 2019-01-26
      • 2019-07-10
      • 2017-09-10
      • 2021-10-04
      相关资源
      最近更新 更多