2016-02-16 4 views
0

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

Чтобы сделать это, я:

1) имеют пользователи войти с OAuth

2) хранить маркер доступа

3) создать Google_Client и дать ему этот маркер доступа

4) используйте этот Google_Client для получения данных аналитики

Это не проблема для первого пользователя. Однако он не работает с ответом «Отказано в доступе» для второго пользователя. Вслед за PHP-кодом я обнаружил, что это связано с тем, что клиент API Google кэширует оригинальный токен доступа (в файловой системе в/var/tmp/google-api-php-client) и использует этот вместо нового доступа токен, который я предоставил.

Как запретить клиенту API Google кэшировать токен доступа в файловой системе?

(Исходная информация о кеше, используемая Google_Client: при предоставлении токена доступа он хранит это с помощью ключа, полученного из области токена. Поскольку область действия остается неизменной при изменении маркера доступа, Google_Client не выполняет . создать новую запись кэша для каждого маркера доступа)

ответ

0

Мы реализовали наш собственный кэш, который просто отбрасывает данные на полу:

namespace AppBundle\Factory; 

use Google\Auth\CacheInterface; 

class NullGoogleCache implements CacheInterface 
{ 

    public function get($key, $expiration = false) 
    { 
     return false; 
    } 

    public function set($key, $value) 
    { 
     //do nothing 
    } 

    public function delete($key) 
    { 
     //do nothing 
    } 
} 
+0

Где вы реализуете этот @ joaquim-dsouza? Вы скажите Google_Client использовать этот класс для кэширования? – tristanbailey

+0

как @mjmarianetti сказал выше, это '$ client-> setCache ($ nullGoogleCache);' –

-1

для того, чтобы иметь несколько Google Analytics счета зарегистрированы, вы можете установить кеш Google_Client для Google_Cache_Null

Google_Client $client = new Google_Client(); 
.... 
$googleCache = new Google_Cache_Null(); 
$client->setCache($googleCache); 

Не забудьте добавить (настроить в соответствии с вашими настройками)

use Google_Client; 
use Google_Cache_Null; 

Вы можете проверить каталог кэша Google по умолчанию (Ubuntu) с:

$ ls /temp/google-api-php-client/ 

информация:

Google_Client

Google_Cache_Null

+0

Это решение не работает. Google_Cache_Null не существует. –

Смежные вопросы