Я пытаюсь получить доступ к принадлежащей мне таблице Google через API таблиц Google. Когда я помещаю свой лист как publi c, у меня нет проблем с доступом к нему, однако, когда лист является частным, я получаю это сообщение об ошибке { "ERROR": { "CODE": 403, "MESSAGE": "THE CALLER DOES NOT HAVE PERMISSION", "ERRORS": [ { "MESSAGE": "THE CALLER DOES NOT HAVE PERMISSION", "DOMAIN": "GLOBAL", "REASON": "FORBIDDEN" } ], "STATUS": "PERMISSION_DENIED" } }
Я отправил запрос в API Google Диска для создания a разрешение для домена, в котором находится мой код, однако это не работает.
Я знаю, что есть аналогичный вопрос о переполнении стека, но предложенное решение заключалось в использовании OAuth система, которую, как мне кажется, я уже использую.
function getSouper()
{
$client = new Google_Client();
$client->setAuthConfig(__DIR__ . '/credentials.json');
$client->setDeveloperKey("MY KEY");
$client->addScope(Google_Service_Drive::DRIVE);
// Your redirect URI can be any registered URI, but in this example
// we redirect back to this same page
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
$client->setRedirectUri($redirect_uri);
if (isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
}
$service = new Google_Service_Sheets($client);
// Prints the names and majors of students in a sample spreadsheet:
// https://docs.google.com/spreadsheets/d/SPREADSHEET-ID/edit
$spreadsheetId = 'SPREADSHEET-ID';
$range = 'menu!A2:C20';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
//print(json_encode($values));
$soupers = array();
foreach ($values as $cle => $valeur) {
if ($valeur && $valeur[0] && strlen($valeur[0])) {
$soupers[$cle]['nom'] = $valeur[0];
$soupers[$cle]['prix'] = enDecimale($valeur[1]);
$soupers[$cle]['id'] = "plat" . ($cle + 1);
if ($valeur[2] == 'TRUE') {
$soupers[$cle]['boite'] = true;
} elseif ($valeur[2] == 'FALSE') {
$soupers[$cle]['boite'] = false;
} else {
die('Erreur, le champ diner? doit être TRUE ou FALSE');
}
}
}
return $soupers;
}
Мои учетные данные. json файл находится в той же папке и записывается следующим образом:
{
"web": {
"client_id": "MY_CLIENT_ID.apps.googleusercontent.com",
"project_id": "MY PROJECT ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "MY_SECRET",
"javascript_origins": ["http://localhost:3000", "MY DOMAIN"]
}
}