Чтение и запись в Google Sheet - после входа в Google - PullRequest
0 голосов
/ 13 февраля 2019

Я несколько дней пытался найти это через Интернет, переполнение стека, потоки и т. Д. Прежде всего, я не программист или что-то еще, я просто балуюсь небольшими сценариями, которые облегчают мою жизнь.

Что я пытаюсь сделать:

  • У меня есть лист Google, который я хочу прочитать через вызов API.
  • , если для листа установлено значение «Любой, имеющий ссылку, можетview "- это работает, я могу читать данные

Однако, когда я установил их так, чтобы только люди в моей организации могли получить к ним доступ, я получил 403 из API

Iмне удалось реализовать логин Google, но я предполагаю, что, хотя я вошел в систему, когда я делаю запрос API для листов, я должен как-то сообщить серверу, что я являюсь аутентифицированным пользователем (и, надеюсь, он знает, что я являюсь частьюта же организация)

<body>
<script src="https://apis.google.com/js/client:platform.js?onload=renderButton" async defer></script>
<meta name="google-signin-client_id" content="749364803721-v-------">
<script>
// Render Google Sign-in button
function renderButton() {
  gapi.signin2.render('gSignIn', {
      'scope': 'profile email',
      'width': 240,
      'height': 50,
      'longtitle': true,
      'theme': 'dark',
      'onsuccess': onSuccess,
      'onfailure': onFailure
  });
}

// Sign-in success callback
var key
function onSuccess(googleUser) {

  // Get the Google profile data (basic)
  //var profile = googleUser.getBasicProfile();
  key = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token
  // Retrieve the Google account data
  gapi.client.load('oauth2', 'v2', function () {
      var request = gapi.client.oauth2.userinfo.get({
          'userId': 'me'
      });
      request.execute(function (resp) {
        doMyStuff(key)
      });
  });
  //get access token after google login

   console.log(key)
 }

 // Sign-in failure callback
 function onFailure(error) {
  console.log("Failure")
 }

// Sign out the user
function signOut() {
  var auth2 = gapi.auth2.getAuthInstance();
  auth2.signOut().then(function () {
      document.getElementsByClassName("userContent")[0].innerHTML = '';
      document.getElementsByClassName("userContent")[0].style.display = "none";
      document.getElementById("gSignIn").style.display = "block";
  });

  auth2.disconnect();
}

function doMyStuff(key) {
 var googleSpreadsheetId = '1BYXpK4koQPUGqT0CFh---------------'
 var sheetUrlBase = "https://sheets.googleapis.com/v4/spreadsheets/" + googleSpreadsheetId
 var apiKey = "AIzaSyCoGCZ3i----------------"
 var range = "A2:X100"
 var sheetUrlForTabNames = sheetUrlBase + "?" + "key=" + apiKey + "&access_token=" + key

 var url = sheetUrlBase + "/values/" + "Main" + "!" + range + "?key=" + apiKey + "&access_token=" + key

 var xhttp = new XMLHttpRequest();
 xhttp.onreadystatechange = function() {
     if (this.readyState == 4 && this.status == 200) {
       response = JSON.parse(this.response);

     }
   }
 xhttp.open("GET", url, true);
 xhttp.send();
}

</script>

<!-- Display Google sign-in button -->
<div id="gSignIn"></div>

<!-- Show the user profile details -->
<div class="userContent" style="display: none;"></div>
</body>

PS: я пытался использовать access_token, который Google дает мне, когда я вхожу и передаю его в вызов API, но он все еще не работает.

Anyoneпожалуйста можноты мне поможешь?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...