Как разрешить моему коду php с определенного c веб-сайта получить доступ к моей личной таблице Google - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь получить доступ к принадлежащей мне таблице 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"]
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...