我正在运行已安装的 Ubuntu MATE 16.04.6。
我已经添加ppa:screenlets/ppa
到它并安装了screenlets-pack-all
包。
然后我启动了screenlets
管理器并将 GoogleCalendarScreenlet 0.4.16++ 添加到我的桌面
已在Options → gCal essential → Google account中设置了凭据。
它显示登录成功的通知:
但它不显示我的 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.
(我在上面看到了Forbidden这个词,所以可能是 API 更改问题)
TL;DR - 这是不可能的,因为 Google 禁用了 ClientLogin 并要求应用程序开发人员改用 OAuth 2.0。
详情如下。
GoogleCalendarScreenlet 基于
python-gdata
library。这个库有特殊的谷歌日历演示程序(它可以从
python-gdata-doc
包中安装)。它可以启动/usr/share/doc/python-gdata-doc/examples/calendar/calendarExample.py --user [username] --pw [password]
当我启动示例程序时,我得到以下输出:
访问https://developers.google.com/accounts/docs/AuthForInstalledApps页面给出了一个有趣的引用:
所以实际上这是
python-gdata
图书馆的“问题”,而不是 GoogleCalendarScreenlet 本身。备择方案:
indicator-datetime
带有 GNOME Evolution 或 GNOME 日历。