Google Places API查询请求被拒绝IOS

时间:2014-01-04 03:42:59

标签: ios7 google-api google-places-api

我已阅读过几篇关于Google Places查询返回Request_Denied的评论,但似乎没有任何内容可供我参考。该应用程序是IOS7和Xcode 5.0.2。

我有一个用于IOS应用程序的API密钥。在Google Developers Console中,应用程序包标识符列在凭据页面中,并启用了Places API。

以下是代码的核心:

-(void)queryGooglePlaces: (NSString *)googleType {
    NSString *url = [NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/search/json?location=%f,%f&radius=%@&types=%@&sensor=false&key=%@", currentCenter.latitude, currentCenter.longitude, [NSString stringWithFormat:@"%i",currenDist], googleType, kGOOGLEAPIKEY];

    NSLog(@"And the url string is: %@", url);//caveman debuging

    NSURL *googleRequestURL = [NSURL URLWithString:url];

    dispatch_async(kBgQueue, ^{
        NSData *data = [NSData dataWithContentsOfURL:googleRequestURL];
        [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
    });

}//queryGooglePlaces:googleType

-(void)fetchedData:(NSData *)responseData {
    //this is to parse out the json data
    NSError *error = nil; //create some error handling here
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

    //I'm told the returned results from Google will be an array obtained from the NSDictionary object with the key "results"

    NSArray *places = [json objectForKey:@"results"];

    //display the data to the console for review
    NSLog(@" Google data:\n%@", places);

}//fetchedData:responseData

调试输出中的效果显示json status = Request Denied

key __NSCFString * @“status”0x09a37d10 value __NSCFString * @“REQUEST_DENIED”0x17961870

这里是url字符串的日志, url字符串为:https://maps.googleapis.com/maps/api/place/search/json?location=37.787359,-122.408227&radius=996&types=cafe&sensor=false&key=

我重新生成了API密钥而没有效果。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:4)

使用Google Places API的浏览器密钥,它可以在iOS应用上正常使用。我在过去两天遇到了类似问题,并使用浏览器密钥解决了问题。

已阅读Google群组:

“Google Places API目前不支持从Google API控制台生成的Android或iOS密钥。目前仅支持服务器和浏览器密钥。”

希望有所帮助

答案 1 :(得分:0)

Google Places API不支持客户端识别的应用程序包标识符方法。您必须创建服务器密钥并将密钥附加到您请求的URL,作为您在URL字符串中列出的key参数的参数。