首页 > 解决方案 > Flutter 谷歌日历每次都要求 Oauth 同意

问题描述

我正在使用谷歌日历 API 来获取用户的事件。

    var _clientID = new ClientId(
    "Client ID",
    "");
const _scopes = const [cal.CalendarApi.CalendarScope];
await clientViaUserConsent(_clientID, _scopes, prompt)
    .then((AuthClient client) async {

  CalendarService.calendar = cal.CalendarApi(client);
});
List<Event> futureevent = await calendarService.getevents();
futureevent.forEach((element) {
  print(element.summary);
});

return futureevent;

问题是这每次都将我重定向到 Oauth 同意屏幕。当用户第一次打开它时,是否有任何方法可以存储 authclient ID 或任何其他方式来使此获得 oauth 同意屏幕仅一次。

标签: fluttergoogle-calendar-api

解决方案


您需要启用offline access

这意味着一旦用户授予访问权限一次 - 您的应用程序可以在后台存储用户刷新令牌并在必要时生成新的访问令牌,而无需用户每次都给予新的同意。

有关更多详细信息,我建议您阅读

刷新访问令牌(离线访问)


推荐阅读