Google Places Api iOS Daily Limit for Unauthenticated Use Exceeded 错误

Posted

技术标签:

【中文标题】Google Places Api iOS Daily Limit for Unauthenticated Use Exceeded 错误【英文标题】:Google Places Api iOS Daily Limit for Unauthenticated Use Exceeded error 【发布时间】:2016-07-15 13:44:32 【问题描述】:

我正在尝试使用适用于 ios 的 google places api。我创建了一个 api 密钥,然后我尝试调用一些方法。我已经在应用程序中输入了 api 密钥,但是当我拨打电话时出现此错误

lookup place id query error: The operation couldn’t be completed. (com.google.places.server.ErrorDomain error -1.)
Error Domain=com.google.places.server.ErrorDomain Code=-1 "(null)" UserInfo=NSUnderlyingError=0x7f8bf861ca80 Error

Domain=com.google.GTLJSONRPCErrorDomain Code=403 "(每日限制为 已超过未经验证的使用。继续使用需要注册。)” UserInfo=error=已超出未经验证使用的每日限制。 继续使用需要注册。, NSLocalizedFailureReason=(Daily Limit 超过未经授权的使用。继续使用需要注册。), GTLStructuredError=GMSx_GTLErrorObject 0x7f8bf2be6060:消息:“每日 已超出未经验证使用的限制。持续使用需要 注册。” 数据:[1] 代码:403

我使用 GMSServices.provideAPIKey("MY_API_KEY") 在我的 appdelegate 中提供了 api 密钥,并且我已授予应用程序的位置访问权限。我当然没有超过我的使用限制(我的配额显示为 0 / 1000),因为我无法与 api 交谈。我已经重新生成了几次密钥,并且还使用其他 gmail 帐户创建了其他密钥,但没有任何效果......

我的猜测是 ios 模拟器位置有问题(我提供了一个 gpx 文件来传递自定义位置)或者谷歌方面有问题。

我的代码中有两个示例:

                let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

            placesClient.lookUpPlaceID(placeID, callback:  (place: GMSPlace?, error: NSError?) -> Void in
                if let error = error 
                    print("lookup place id query error: \(error.localizedDescription)")
                    print(error)
                    return
                

                if let place = place 
                    print("Place name \(place.name)")
                    print("Place address \(place.formattedAddress)")
                    print("Place placeID \(place.placeID)")
                    print("Place attributions \(place.attributions)")
                 else 
                    print("No place details for \(placeID)")
                
            )

                placesClient.currentPlaceWithCallback( (placeLikelihoods, error) -> Void in
                guard error == nil else 
                    print("Current Place error: \(error!.localizedDescription)")
                    return
                

                if let placeLikelihoods = placeLikelihoods 
                    for likelihood in placeLikelihoods.likelihoods 
                        let place = likelihood.place
                        print("Current Place name \(place.name) at likelihood \(likelihood.likelihood)")
                        print("Current Place address \(place.formattedAddress)")
                        print("Current Place attributions \(place.attributions)")
                        print("Current PlaceID \(place.placeID)")
                    
                
            )

placesClient 是一个实例化为 GMSPlacesClient() 的 var。 我在这里错过了什么吗? 其余代码是典型的 Xcode 单应用项目。

【问题讨论】:

它显示“已超出未经验证使用的每日限制”。这表明您实际上没有登录。这意味着每个 IP 地址的每日限制适用,而不是您的配额。 您能否提供更多详细信息?我必须在哪里登录?我创建了我的应用程序并获得了我的 api 密钥。然后我在我的代码中使用该密钥来连接 api。我应该在什么时候登录? 【参考方案1】:

在这里回答我自己的问题!

原来这个错误完全是我的错误(通常是这样)。我正在像这样设置placesClient var

var placesClient = GMSPlacesClient()

在 google 的示例 (check it here) 中,placesClient 变量被声明为可选的 GMSPlacesClient,然后在 viewDidLoad 中设置为 GMSPlacesClient.sharedClient()。不幸的是我错过了那部分。代码是这样的

var placesClient: GMSPlacesClient?

override func viewDidLoad() 
    super.viewDidLoad()
    placesClient = GMSPlacesClient.sharedClient()

【讨论】:

以上是关于Google Places Api iOS Daily Limit for Unauthenticated Use Exceeded 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 版 Google Places API 中查找当前用户位置

在 Google Places 自动完成 iOS api 中包含距离

Google Places Api iOS Daily Limit for Unauthenticated Use Exceeded 错误

如何使用 Google Places Autocomplete API iOS 保存以前搜索过的结果

在 Google Places API 中嵌入当前位置(经度和纬度)

未启用 iOS 版 Places API