Я искал везде и не могу найти пример для подражания.
У меня есть личный гугл лист. Я использую данные из листа Google, чтобы заполнить различные диаграммы с помощью API визуализации Google на простой веб-странице с использованием JavaScript.
В настоящее время каждый пользователь должен авторизоваться (через поток oauth) для просмотра данных в диаграммах. Пользователи смотрят только на графики, но не изменяют их, поэтому у моего веб-приложения нет причин иметь доступ к каждой учетной записи Google пользователя.
Я бы хотел исключить часть проверки подлинности пользователя и вместо этого предоставить серверу авторизацию для аутентификации с помощью личного листа Google через учетную запись службы Google и сервер-сервер Oauth, сохраняя при этом фактическую электронную таблицу в секрете.
Шаги, которые я предпринял:
Я создал учетную запись службы в консоли разработчиков Google
Сохранен файл .json с закрытым ключом, открытым ключом, идентификатором и т. Д.
Я попытался выполнить шаги, обозначенные здесь , но нет примера, который бы использовал javascript.
Я также не уверен, почему код предоставляет файл p12, который содержит закрытый ключ.
Пример, который авторизовал пользователей через поток oAuth для доступа к электронной таблице, довольно прост, и вот что я делал:
function initClient() {
var API_KEY = 'myapikey';
var CLIENT_ID = 'myid';
var SCOPE = 'https://www.googleapis.com/auth/spreadsheets.readonly';
gapi.client.init({
'apiKey': API_KEY,
'clientId': CLIENT_ID,
'scope': SCOPE,
'discoveryDocs': ['https://sheets.googleapis.com/$discovery/rest?version=v4'],
}).then(function() {
gapi.auth2.getAuthInstance().isSignedIn.listen(updateSignInStatus);
updateSignInStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
});
}
function handleClientLoad() {
gapi.load('client:auth2', initClient);
}
function updateSignInStatus(isSignedIn) {
if (isSignedIn) {
//do stuff
drawGID()
}
else{
}
}
function handleSignInClick(event) {
gapi.auth2.getAuthInstance().signIn();
}
function handleSignOutClick(event) {
gapi.auth2.getAuthInstance().signOut();
}
//draw all the charts
function drawGID() {
var params = {
valueRenderOption: "FORMATTED_VALUE",
spreadsheetId: 'myspreadsheetID',
range: 'MySpreadsheetRange!A:AX',
};
var request = gapi.client.sheets.spreadsheets.values.get(params);
request.then(function(response) {
//do various stuff with the data from response
var dataTable = response.getDataTable();
});
}