2
PHP Cron에서 Fusion Tables를 관리하고 싶습니다. 나는 그것이 동작하지 않습니다 :google-api를 사용할 수 없습니다.
<?php
//include_once "templates/base.php";
error_reporting(E_ALL-E_WARNING-E_NOTICE-E_DEPRECATED);
ini_set('display_errors',1);
session_start();
set_include_path("src/" . PATH_SEPARATOR . get_include_path());
require_once 'Google/Client.php';
require_once 'Google/Service/Fusiontables.php';
$client_id = 'given';
$service_account_name = 'given';
$key_file_location = 'given';
$tableid='given';
$client = new Google_Client();
$client->addScope("https://www.googleapis.com/auth/fusiontables");
$service=new Google_Service_Fusiontables($client);
unset($_SESSION['service_token']);
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/fusiontables'),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$result=$service->table->listTable();
$insert_statement = "SELECT tytul FROM $tableid ";
$result = $service->query->sql($insert_statement);
?>
을 여기 결과입니다 :
object(Google_Service_Fusiontables_TableList)#14 (7) {
["itemsType":protected]=>
string(33) "Google_Service_Fusiontables_Table"
["itemsDataType":protected]=>
string(5) "array"
["kind"]=>
string(22) "fusiontables#tableList"
["nextPageToken"]=>
NULL
["collection_key":protected]=>
string(5) "items"
["data":protected]=>
array(0) {
}
["processed":protected]=>
array(0) {
}
}
Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/fusiontables/v1/query: (403) Forbidden' in /funkcje/google-api/src/Google/Http/REST.php:80 Stack trace: #0 /funkcje/google-api/src/Google/Http/REST.php(44): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request)) #1 /funkcje/google-api/src/Google/Client.php(499): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request)) #2 /funkcje/google-api/src/Google/Service/Resource.php(195): Google_Client->execute(Object(Google_Http_Request)) #3 /funkcje/google-api/src/Google/Service/Fusiontables.php(682): Google_Service_Resource->call('sql', Array, 'Google_Service_...') #4 /funkcje/google-api/fusion-tables.php(79): Google_Service_Fusiontables_Query_Resource->sql('SELECT tytul FR...') #5 {main} thrown in /funkcje/google-api/src/Google/Http/REST.php on line 80
당신은 내가 API (첫 번째 결과)와 연결하고있어 볼 수 있지만에서 (다시 어떤 테이블을 제공 없기 때문에 dev에 콘솔 두 테이블 반환 - 다른 계정에 연결된 것처럼 ...
서비스 계정으로 연결 중입니다. 웹 응용 프로그램의 클라이언트 ID로 연결하면 모두 작동합니다.