如何让 GoogleCalendarScreenlet 显示 Google 日历?

如何让 GoogleCalendarScreenlet 显示 Google 日历?

我正在运行已安装的 Ubuntu MATE 16.04.6。

我已添加ppa:screenlets/ppa它并安装了screenlets-pack-all包。

然后我启动了screenlets管理器并将 GoogleCalendarScreenlet 0.4.16++ 添加到我的桌面

无凭证

已在选项 → gCal 基本 → Google 帐户

显示登录成功的通知:

但它没有显示我的 Google 日历中的事件。

为什么?是只有我一个人有这种感觉,还是它根本不起作用?

是否存在任何可用的桌面小工具(小部件)?


部分日志如下:

$ screenlets

/usr/lib/python2.7/dist-packages/screenlets/backend.py:166: Warning: Source ID 2251 was not found when attempting to remove it
  gobject.source_remove(self.__timeout)
Traceback (most recent call last):
  File "/usr/share/screenlets/screenlets-pack-all/GoogleCalendar/GoogleCalendarScreenlet.py", line 133, in __deal_with_data
    all_calendars_feed = self.screenlet.cal_client.GetAllCalendarsFeed()
  File "/usr/lib/python2.7/dist-packages/gdata/calendar/service.py", line 81, in GetAllCalendarsFeed
    return self.Get(uri, converter=gdata.calendar.CalendarListFeedFromString)
  File "/usr/lib/python2.7/dist-packages/gdata/service.py", line 1107, in Get
    'reason': server_response.reason, 'body': result_body}
RequestError: {'status': 403, 'body': '<HTML>\n<HEAD>\n<TITLE>Forbidden</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>Forbidden</H1>\n<H2>Error 403</H2>\n</BODY>\n</HTML>\n', 'reason': 'Forbidden'}

$ tail -f ~/.config/screenlets/GoogleCalendarScreenlet.log
Running update
Checking the Internet connection
Fetching events in calendars from: 2019-05-15T00:00:00+03:00 to 2019-06-05T23:59:59+03:00.
END RETRIEVE
Update failed for some unknown reason.

(我看到了禁止以上,因此可能是 API 更改问题)

答案1

总结- 这是不可能的,因为 Google 禁用了 ClientLogin 并要求应用程序开发人员改用 OAuth 2.0。


详情如下。GoogleCalendarScreenlet
基于python-gdata图书馆
该库有专门的 Google 日历演示程序(可从python-gdata-doc包中安装)。可以使用
/usr/share/doc/python-gdata-doc/examples/calendar/calendarExample.py --user [username] --pw [password]

当我启动示例程序时,我得到以下输出:

Traceback (most recent call last):
  File "/usr/share/doc/python-gdata-doc/examples/calendar/calendarExample.py", line 617, in <module>
    main()
  File "/usr/share/doc/python-gdata-doc/examples/calendar/calendarExample.py", line 613, in main
    sample = CalendarExample(user, pw)
  File "/usr/share/doc/python-gdata-doc/examples/calendar/calendarExample.py", line 51, in __init__
    self.cal_client.ClientLogin(email, password, self.cal_client.source);
  File "/usr/lib/python2.7/dist-packages/gdata/client.py", line 441, in client_login
    captcha_token=captcha_token, captcha_response=captcha_response)
  File "/usr/lib/python2.7/dist-packages/gdata/client.py", line 373, in request_client_login_token
    response, ClientLoginFailed, response_body)
gdata.client.ClientLoginFailed: Server responded to ClientLogin request: 404, https://developers.google.com/accounts/docs/AuthForInstalledApps

参观https://developers.google.com/accounts/docs/AuthForInstalledApps页面上有一段有趣的引言:

重要的:ClientLogin 自 2012 年 4 月 20 日起正式弃用,现在不再可用。对 ClientLogin 的请求将失败并出现 HTTP 404 响应。我们建议您尽快迁移到 OAuth 2.0。

所以实际上这是一个python-gdata库的“问题”,而不是 GoogleCalendarScreenlet 本身的问题。


备择方案:

  • 对于 Ubuntu 16.04 LTS -雨量计 Pro(它使用 OAuth);
  • 适用于 Ubuntu 18.04 LTS -indicator-datetime带有 GNOME Evolution 或 GNOME Calendar。

相关内容