我使用 Offlineimap 来组织我的电子邮件,为了使用我的工作帐户,我现在必须使用 OAuth2 身份验证。
我成功获得了刷新令牌,因此如果我oauth2_refresh_token
相应地设置变量,offlineimap 就会起作用。但是,我想存储加密的刷新令牌(我使用 unix pass,将其存储为 gpg 加密文件)。
我无法设法使用 来oauth2_refresh_token_eval
设置从 pass 或相应的 gpg 文件中读取刷新令牌的 python 代码,可能是因为我完全缺乏 python 知识。我尝试使用与 相同的代码remotepasseval
(对于后者来说效果很好):
def get_pass(account):
return check_output("pass email/" + account, shell=True).splitlines()[0]
但我收到以下错误:
TypeError: a bytes-like object is required, not 'str'
事实上,offlineimaprc 模板在这里指定返回值oauth2_refresh_token_eval
“必须是字节”(无论这意味着什么)。
在这种情况下使用的正确代码是什么?
答案1
这对我有用:
def get_token(account):
return check_output("pass " + account, shell=True).decode().splitlines()[0]