记住 Google Calendar API 的权限 - Javascript

问题描述 投票:0回答:1

遵循以下代码:https://developers.google.com/calendar/api/quickstart/js

它指出“授权信息存储在文件系统中,因此下次运行示例代码时,不会提示您授权。”

但是目前需要我每次重新加载网页时请求许可。

有什么想法吗?

const CLIENT_ID = '';
const API_KEY = '';

const DISCOVERY_DOC = 'https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest';
const SCOPES = 'https://www.googleapis.com/auth/calendar.readonly https://www.googleapis.com/auth/calendar';

let tokenClient;
let gapiInited = false;
let gisInited = false;

function gapiLoaded() {
  gapi.load('client', initializeGapiClient);
}

async function initializeGapiClient() {
  await gapi.client.init({
    apiKey: API_KEY,
    discoveryDocs: [DISCOVERY_DOC],
  });
  gapiInited = true;
}

function gisLoaded() {
  tokenClient = google.accounts.oauth2.initTokenClient({
    client_id: CLIENT_ID,
    scope: SCOPES,
    callback: '', // defined later
  });
  gisInited = true;
}

//? Sign In
function handleAuthClick() {
  tokenClient.callback = async (resp) => {
    if (resp.error !== undefined) {
      throw (resp);
    }
  };

  if (gapi.client.getToken() === null) {
    // Prompt the user to select a Google Account and ask for consent to share their data
    // when establishing a new session.
    tokenClient.requestAccessToken({prompt: 'consent'});
  } else {
    // Skip display of account chooser and consent dialog for an existing session.
    tokenClient.requestAccessToken({prompt: ''});
  }
}

//? Sign Out
function handleSignoutClick() {
  console.log("sign in")
  const token = gapi.client.getToken();
  if (token !== null) {
    google.accounts.oauth2.revoke(token.access_token);
    gapi.client.setToken('');
  }
}
javascript google-oauth google-calendar-api google-workspace google-api-js-client
1个回答
0
投票

确实,在 Google 日历的 JavaScript 快速入门 的底部有这样的说明。

授权信息存储在文件系统中,因此下次运行示例代码时,不会提示您授权。

JavaScript 示例并非如此,因为它是为 Web 应用程序设计的。这是示例中的一个错误,我已将其报告给团队。

然而,

node.js 示例确实将其存储在文件系统中,因为它是为已安装的应用程序设计的。我猜有人复制了文本但没有修复它。

© www.soinside.com 2019 - 2024. All rights reserved.