2015-07-21 3 views
6

Я правильно реализовал клиент Google API в своем приложении PHP. Я смог подключиться к услуге, которую хотел.Как проверить, действителен ли ключ API клиента Google в библиотеке API Google PHP?

Но теперь я хочу проверить, является ли ключ API, введенный пользователем, действительным или нет.

Я огляделся вокруг или на методы, выставленные классом Google_Client(), но я не думаю, что я уверен, как это проверить.

Ниже здесь метод в моем классе, который создает клиент:

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

И я хочу сделать еще один способ сказать, если ключ API используется справедливо или нет ...

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

Или мне нужно подключиться к службе, а затем проверить, есть ли у меня доступ на чтение? Но я считаю, что есть более простой и лучший способ сделать это ...

+0

Должен ли я подключиться к службе, а затем проверить, есть ли у меня доступ на чтение? Я уверен, что это единственный способ проверить, действительно ли его действительный – DaImTo

+0

да ... Я надеялся хотя бы на прямой метод в объекте client, возвращающем bool или что-то в этом роде. Дело в том, что Google_Client или Служба Google, созданная клиент все равно попытается подключиться, и служба будет отвечать в любом случае, поэтому шаги для проверки правильности ключа api путем вытаскивания данных довольно немного. – unfulvio

+1

Да, но единственный способ для проверки подлинности библиотеки - отправить запрос. Я засуха Google разоблачил форматирование своих ключей. даже checkToken() выглядит как попытка просто сделать фиктивный запрос. – DaImTo

ответ

1

вы можете проверить с помощью JavaScript; недействительный ключ всегда устанавливает недокументированное свойство window.G_INCOMPAT. для исправления ошибок для обезьян с function alert() {} может потребоваться избавиться от alert() за недопустимый ключ, что только помешает процессу установки ключа.

это answer имеет интересный подход, касающийся alert()

есть также задокументированы функция, можно подключить в: https://developers.google.com/maps/documentation/javascript/events#auth-errors

если он действительно должен быть PHP, вы можете по-прежнему генерировать некоторые JS и запустите его с помощью PhantomJS.

см. Мой Github: php-phantomjs ... это невозможно.