Offlineimap:Unixパス(またはgpgファイル)からリフレッシュトークンを読み取るPythonコード

Offlineimap:Unixパス(またはgpgファイル)からリフレッシュトークンを読み取るPythonコード

私はOfflineimapを使ってEメールを整理していますが、仕事のアカウントを使用するにはOAuth2認証を使用する必要があります。

リフレッシュトークンが正常に取得されたので、oauth2_refresh_tokenそれに応じて変数を設定するとオフラインimapが機能します。ところで、暗号化されたリフレッシュトークンを保存したいと思います(私はunix passを使用してgpg暗号化ファイルとして保存します)。

oauth2_refresh_token_evalパスまたはその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'

実際、オフラインimaprcテンプレートは、ここで戻り値がoauth2_refresh_token_eval「バイトでなければならない」(それが何を意味するか)を指定します。

この状況で使用する正しいコードは何ですか?

答え1

これは私にとって効果的です。

def get_token(account):
    return check_output("pass " + account, shell=True).decode().splitlines()[0]

関連情報