我正在运行已安装的 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。