До сих пор, когда бы мне ни понадобилось сохранить «секрет» для простого python приложения, я полагался на переменные среды. В Windows я устанавливаю переменные в диалоговом окне «Свойства компьютера» и получаю к ним доступ в своем коде Python следующим образом:
database_password = os.environ['DB_PASS']
Простота этого подхода хорошо мне послужила. Теперь у меня есть проект, который использует аутентификацию Oauth2, и мне нужно хранить токены в среде, которая может меняться в процессе выполнения программы. Я хочу, чтобы они сохранялись при следующем запуске программы. Вот что я придумала:
#fetch a new token
token = oauth.fetch_token('https://api.example.com/oauth/v2/token', code=secretcode)
access_token = token['access_token']
#make sure it persists in the current session
os.environ['TOKEN'] = access_token
#store to the system environment (Windows)
cmd = 'SETX /M TOKEN ' + access_token
os.system(cmd)
Сегодня я быстро справляюсь с работой, но не похоже на правильный подход для добавления к моей панели инструментов. У кого-нибудь есть более элегантный способ делать то, что я пытаюсь сделать, не добавляя слишком много уровней сложности? Если бы решение работало на разных платформах, это было бы бонусом.