![Offlineimap:从unix pass(或gpg文件)读取刷新令牌的python代码](https://linux22.com/image/202219/Offlineimap%EF%BC%9A%E4%BB%8Eunix%20pass%EF%BC%88%E6%88%96gpg%E6%96%87%E4%BB%B6%EF%BC%89%E8%AF%BB%E5%8F%96%E5%88%B7%E6%96%B0%E4%BB%A4%E7%89%8C%E7%9A%84python%E4%BB%A3%E7%A0%81.png)
我使用 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]