2012-09-05 5 views
5

Ich habe getan, dassStatus "REQUEST_DENIED" Getting nach Daten von Google Abrufen stellt API

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"https://maps.googleapis.com/maps/api/place/search/json?location=30.722322,76.76126&radius=500&types=food&sensor=true&key=any_apiKey"]]; 

    NSURLResponse *response; 
    NSError *error; 
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
    NSString *strResponse = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    NSLog(@"%@",strResponse); 

    SBJSON *sbJason = [[SBJSON alloc] init]; 
    NSMutableDictionary *getPlaceList = [sbJason objectWithString:strResponse]; 

// Aber ich bin this- immer

{ 
"html_attributions" : [], 
    "results" : [], 
"status" : "REQUEST_DENIED" 
} 

** Gibt es irgendein Problem mit API Key Ich habe API-Schlüssel von Google Map geschrieben. Gibt es irgendein Problem mit api Schlüssel oder was mir bitte sagen, hier ist die link of google api

+0

Übergeben Sie wirklich "any_apikey" als Ihren API-Schlüssel? –

+0

Nein, nein, es ist nicht mein echter API-Schlüssel. Ich habe andere API-Schlüssel von Google gegeben –

+0

Ok, gut :) wollte nur überprüfen –

Antwort

2

Die Static Maps API und die Places API jeder muss in der API aktiviert sein Console für diesen Schlüssel. Öffnen Sie die API-Konsole und aktivieren Sie den Zugriff auf die Places-API. Es gibt ein Höflichkeitslimit: 1.000 Anfragen/Tag, danach müssen Sie möglicherweise die Abrechnung aktivieren.

https://code.google.com/apis/console/

+0

Hallo, Wie aktiviert man den Zugriff auf die Places API in der Konsole. Kannst du mir die Schritte erklären? – Dave

1

try this: -

https://developers.google.com/places/documentation/

lesen folgenden Abschnitt und fahren Sie mit den Schritten, um die Schlüssel zu erhalten.

Authentifizierung

Die Google Places API verwendet einen API-Schlüssel Ihrer Anwendung zu identifizieren. API-Schlüssel werden über die Google APIs-Konsole verwaltet. Bevor Sie die API verwenden können, benötigen Sie Ihren eigenen API-Schlüssel. Um den Places API zu aktivieren und die Schlüssel erstellen:

Visit the APIs console at https://code.google.com/apis/console and log in with your Google Account. 
A default project called API Project is created for you when you first log in to the console. You can use the project, or create a new one by clicking the API Project button at the top of the window and selecting Create. Maps API for Business customers must use the API project created for them as part of their Places for Business purchase. 
Click the Services link from the left-hand menu. 
Click the Status switch next to the Places API entry. The switch slides to On. 
Click API access from the left navigation. Your key is listed in the Simple API Access section. 
+0

LOL ... Ich habe diesen API-Schlüssel AIzaSyC6RgmTP5LoaS6oFSiOSu ???????????? aber ich zeige, dass any_apiKey für Sicherheitszwecke ... –

+0

dann ist was das Problem? – Gypsa

+0

Sie müssen die gesamte Dokumentation lesen und das Problem beheben, denn ohne den api-Schlüssel zu kennen, können wir die URL nicht ausführen und prüfen, ob etwas falsch ist oder nicht. – Gypsa

4

Schließen Sie den Browser App-Taste, nicht die iOS-Taste. Sie können es hier finden:

https://code.google.com/apis/console/

und drücken Sie „API Access“ auf der linken Seite

+0

BROWSER App-Taste funktioniert, aber nicht iOS-Taste .... – Maulik

+0

Ich habe versucht, einen Schlüssel für Android-App zu verwenden, aber wie @CaptainQuality sagte, mit Browser-App-Taste arbeitete für mich und erstellen Sie nicht Ihre mobilen Betriebssystem spezifischen Schlüssel. Ich bin nicht sicher, warum das von Google so verwirrend sein muss. – Rajaraman

2

Ich will nur zweite Joshs Lösung. Ich habe Stunden damit verbracht, mit dem IOS-Schlüssel herauszufinden und habe fast aufgegeben.

20

Obwohl dies beantwortet wurde, denke ich, dass die Gemeinschaft besser erklären könnte, was TATSÄCHlich getan werden muss, damit das funktioniert.

Ich riss mir die Haare aus, es ergab einfach keinen Sinn für mich .. Ich machte eine iOS/Android App, also machte ich einen iOS/Android Key ... Falsch.

Mit Google Places API wird Ihre Bundle-ID nicht einmal berücksichtigt.

Was Sie wirklich wollen, dies zu tun ist: (Ich verwende das neue User Interface)

1. Melden Sie sich https://cloud.google.com/console#/project

Wählen Sie ein Projektname, gehen dann in API & Auth> APIs

Vergewissern Sie sich, dass die Places API aktiviert ist. Dies ist das einzige, was aktiviert werden muss, damit die Places-API funktioniert. enter image description here

2. Gehen Sie in Credentials

Klicken Sie CREATE NEW KEY unter Public API-Zugang enter image description here

3. Wählen Sie BROWSER KEY enter image description here

4. Klicken Sie auf Erstellen, Nichts anderes

Lassen Sie das Feld HTTP-Verweis leer.

enter image description here

5. Verwenden Sie die hier erzeugten Schlüssel

Dieser Schlüssel jeder Benutzer von jedem Gerät aus Zugriff auf die API über Ihre Entwickler Login ermöglicht. Sie können es versuchen, hier aus: (Achten Sie darauf, YOUR_KEY_HERE mit Ihrem generierten Schlüssel ersetzen)

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Food%20Sh&sensor=false&radius=500&location=0,0&key=YOUR_KEY_HERE 

6. Genießen Sie

Jetzt können Sie diese URL oben in Ihrem Android/iOS-Gerät verwenden .

+0

Das war es. Schritt 4 (Lassen Sie das HTTP-Refer-Feld leer.) Funktionierte für mich. – Marco

+0

Dies ist die beste Antwort. Ich danke dir sehr. –

+0

Obwohl dies wie eine kluge Antwort klingen mag, ist es die einzige Option. Die Google Places-API unterstützt derzeit nicht die Android- oder IOS-Schlüssel .... SMH Sie können die offizielle Anfrage unter google https://code.google.com/p/gmaps-api-issues/issues/detail?id= einsehen 4896 –

0

Ich am Ende mit diesem Code.

UIActivityIndicatorView *activity=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
activity.center=self.view.center; 
[activity startAnimating]; 
[self.view addSubview:activity]; 


NSString *str=[[NSString alloc] init]; 
str=[NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/place/textsearch/json?query=%@&sensor=true&key=YOUR_BROWSER_KEY",searchQuery]; 
NSMutableURLRequest *request1=[[NSMutableURLRequest alloc] init]; 
NSURL *url= [[NSURL alloc] initWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
[request1 setURL:url]; 
[request1 setHTTPMethod:@"GET"]; 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    NSError *requestError = nil; 
    NSURLResponse *urlResponse = nil; 
    NSData *response1 = 
    [NSURLConnection sendSynchronousRequest:request1 
          returningResponse:&urlResponse error:&requestError]; 


    dispatch_async(dispatch_get_main_queue(), ^{ 


     if ([activity isAnimating]) { 
      [activity startAnimating]; 
      [activity removeFromSuperview]; 
     } 
     NSError* error; 
     NSDictionary* json = [NSJSONSerialization JSONObjectWithData:response1 
                  options:kNilOptions 
                   error:&error]; 

     NSLog(@"%@",json); 

     self.searchArray=[json objectForKey:@"results"]; 
     [self.tableView setDataSource:self]; 
     [self.tableView setDelegate:self]; 
     [self.tableView reloadData]; 

     [self showPins:self.searchArray]; 

    }); 
}); 
Verwandte Themen