Переход на Google Fusion Tables в Google API V.1

Я обновляю компонент joomla i, однажды сделанный для таблиц слияния Google. Я загрузил новый php api. Но у меня есть некоторые сомнения относительно того, как я должен развивать свой сайт и некоторые вещи с помощью oauth.

Поэтому мой сайт читает таблицы слияния и позволяет моим пользователям (Joomla) изменять, удалять или добавлять данные в любую из этих таблиц. Поэтому мой вопрос: нужен ли мне логин для входа в систему, который является типом веб-приложения или учетной записью службы. Логичнее использовать учетную запись службы. Если да, то каким образом я могу подключиться с помощью php и фреймворка google php api.

$clientlogin_curl = curl_init(); curl_setopt($clientlogin_curl,CURLOPT_URL,'https://www.google.com/accounts/ClientLogin'); curl_setopt($clientlogin_curl, CURLOPT_POST, true); curl_setopt ($clientlogin_curl, CURLOPT_POSTFIELDS, "Email=".$username."&Passwd=".$password."&service=fusiontables&accountType=GOOGLE"); curl_setopt($clientlogin_curl,CURLOPT_CONNECTTIMEOUT,2); curl_setopt($clientlogin_curl,CURLOPT_RETURNTRANSFER,1); $token = curl_exec($clientlogin_curl); curl_close($clientlogin_curl); $token_array = explode("=", $token); $token = str_replace("\n", "", $token_array[3]); 

Выше это то, как я привык к подключению, но теперь я получаю квоту, потому что она устарела.

Я читал это, https://code.google.com/p/google-api-php-client/wiki/OAuth2 , а в части учетных записей службы Fusion Tables не упоминается. Если не то, что должно мое перенаправление uri должно быть

РЕДАКТИРОВАТЬ

это мой код сейчас

 jimport('gft-jdc.oauth-php.src.Google_Client'); jimport('gft-jdc.oauth-php.src.contrib.Google_PlusService'); const CLIENT_ID = 'XXXXXXXXXXXXXXXXXXXXXXX7pu.apps.googleusercontent.com'; const SERVICE_ACCOUNT_NAME = 'XXXXXXXXXXXXXXXXXXXpu@developer.gserviceaccount.com'; const KEY_FILE = '/home/jdc/workspace/xxxxxxxxxxxxxxxprivatekey.p12'; class ClientLogin { public static function getAuthToken($username, $password) { $client = new Google_Client(); $client->setApplicationName("API Project"); var_dump(CLIENT_ID); var_dump(KEY_FILE); $client->setClientId(CLIENT_ID); // Set your cached access token. Remember to replace $_SESSION with a // real database or memcached. if (isset($_SESSION['token'])) { $client->setAccessToken($_SESSION['token']); } // Load the key in PKCS 12 format (you need to download this from the // Google API Console when the service account was created. $key = file_get_contents(KEY_FILE); $client->setAssertionCredentials(new Google_AssertionCredentials( SERVICE_ACCOUNT_NAME, array('https://www.googleapis.com/auth/fusiontables'), $key) ); $client->authenticate(); if ($client->getAccessToken()) { $_SESSION['token'] = $client->getAccessToken(); } $token = $_SESSION['token']; var_dump($token); return $token; } } 

Я получаю эту ошибку

введите описание изображения здесь

Решение , я просто решил эту последнюю проблему, вам не нужно $ client-> authenticate ()

Вот решение Как получить токен доступа OAuth2 с клиентом API API Google?

 if ($client->getAuth()->isAccessTokenExpired()) { $client->getAuth()->refreshTokenWithAssertion(); } 

  1. Используйте учетную запись службы. Учетная запись службы идентифицирует услугу (например, веб-сайт), а не лицо. Поскольку на вашем сайте требуется доступ к таблицам слияния, а не к вам – учетная запись службы – это путь. (Другой вариант – заставить пользователей проходить аутентификацию против ваших таблиц слияния один за другим. Это потребует, чтобы все ваши пользователи имели учетную запись google и ваш сайт, чтобы дать им разрешение. Теперь мы не хотим проходить все хлопоты, не так ли?)

  2. Используйте консоль API для создания учетной записи службы. Обратите внимание на свое имя учетной записи, идентификатор клиента. Создайте и загрузите файл приватного ключа .p12. После создания учетной записи службы поделитесь (aka: дайте разрешения) вашей таблице слияния с адресом электронной почты учетной записи службы (xxxx@developer.gserviceaccount.com)

  3. Забудьте локон. Загрузите клиент PHP API Google . Под капотом он все равно будет использовать завиток, но избавит вас от головной боли.

  4. Включите клиентский код api в свой код и выполните аутентификацию.

     require_once '<path>/src/Google_Client.php'; require_once '<path>/src/contrib/Google_FusiontablesService.php'; $CLIENT_ID = 'xxx.apps.googleusercontent.com'; $SERVICE_ACCOUNT_NAME = 'xxx@developer.gserviceaccount.com'; $KEY_FILE = '<path to your .p12 file>'; //this should not be reached by any of your site's visitors $client = new Google_Client(); $client->setApplicationName("whatever"); $client->setClientId($CLIENT_ID); $client->setAssertionCredentials(new Google_AssertionCredentials( $SERVICE_ACCOUNT_NAME, array('https://www.googleapis.com/auth/fusiontables'), file_get_contents($KEY_FILE) ); $client->authenticate(); //do whatever you need to do with your fusion table on behalf of the user