Я несколько дней пытался найти это через Интернет, переполнение стека, потоки и т. Д. Прежде всего, я не программист или что-то еще, я просто балуюсь небольшими сценариями, которые облегчают мою жизнь.
Что я пытаюсь сделать:
- У меня есть лист 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пожалуйста можноты мне поможешь?
Спасибо