2015-07-21 19 views
6

Mam poprawnie zaimplementowałem klienta Google API w mojej aplikacji PHP. Udało mi się połączyć z usługą, o którą chciałem.Jak sprawdzić, czy klucz API klienta Google jest prawidłowy w bibliotece Google PHP API?

Ale teraz chcę sprawdzić, czy klucz API wprowadzony przez użytkownika jest poprawny czy nie.

Rozejrzałem się wokół metod ujawnionych przez klasę Google_Client(), ale nie sądzę, że jestem pewien, jak to sprawdzić.

Poniżej oto sposób w mojej klasie, która tworzy klienta:

private function client($api_key) { 

     $client = new \Google_Client(); 
     $client->setClassConfig('Google_Cache_File', 'directory', $this->cache_dir); 
     $client->setDeveloperKey($api_key); 
     $client->setApplicationName($this->name); 
     $client->setScopes(array(\Google_Service_Calendar::CALENDAR_READONLY)); 
     $client->setAccessType('online'); 

     return $client; 
    } 

I chcę, aby inny sposób stwierdzić, czy klucz API używany jest poprawny, czy nie ...

public function validate_api_key($api_key) { 
     $client = $this->client($api_key); 

     // What should I use here to check if $api_key is valid? 

     if ($client) { 
      return true; 
     } 
     return 'error'; 
    } 

Czy powinienem połączyć się z usługą, a następnie sprawdzić, czy mam tam dostęp do odczytu? Ale uważam, że jest prostszy i lepszy sposób na zrobienie tego ...

+0

Czy powinienem połączyć się z usługą, a następnie sprawdzić, czy mam tam dostęp do odczytu? Jestem całkiem pewny, że to tylko sposób na sprawdzenie, czy jego prawidłowy – DaImTo

+0

dobrze tak ... Mam nadzieję, że chociaż dla metody bezpośredniej w obiekcie klienta zwracającego bool lub coś ... chodzi o to, że Google_Client lub usługa Google utworzona przez klient nadal będzie próbował się połączyć, a usługa i tak zareaguje, więc kroki mające na celu sprawdzenie, czy klucz API jest ważny przez wyciąganie danych, są całkiem niezłe. – unfulvio

+1

Tak, ale jedynym sposobem, aby lib potwierdził to byłoby wysłanie żądanie. Po suszy Google ujawnił formatowanie swoich kluczy. nawet checkToken() wygląda na to, że próbuje jedynie wykonać fałszywą prośbę. – DaImTo

Odpowiedz

1

można sprawdzić za pomocą JavaScript; Niewłaściwy klucz zawsze ustawi nieudokumentowaną właściwość window.G_INCOMPAT. łatanie małp z function alert() {} może być wymagane do pozbycia się alert() niepoprawnego klucza, który zakłóciłby tylko proces ustawiania klucza.

ten answer ma ciekawe podejście dotycząca alert()

jest także udokumentowana funkcja, można zaczepić na: https://developers.google.com/maps/documentation/javascript/events#auth-errors

czy to naprawdę musi być PHP, można jeszcze wygenerować pewne JS i uruchom go za pomocą PhantomJS.

zobacz mój Github: php-phantomjs ... to nie jest niemożliwe.