如何避免将 Spotipy 客户端密码添加到使用 cx_Freeze 冻结的代码中?对于最终用户分发

问题描述 投票:0回答:0

虽然我有编写自己的东西的经验,这些东西永远不会离开我的机器,但我现在正在编写一个 python 应用程序,我想将其与 cx_Freeze 捆绑在一起并作为

.exe
分发。我遇到的问题是,如何在不暴露客户端机密的情况下将其与该应用程序一起发送?也许这是不可能的,我正在以错误的方式去做,但我只是不知道足以确定。

现在,我将客户端 ID、秘密和回调 URL 隐藏在我已 gitignored 的

.env
文件中。该应用程序在 Pycharm 中运行良好。当我用 cx_Freeze 打包并在我的 venv 中运行
.exe
时,它也能正常工作。

我试着告诉 cx_Freeze 只包含

src
中的文件(我的
.env
src
在同一个父文件夹中)但我相信
'include_files'
只是指示cx_Freeze包含文件,而不包括only那些文件。

据我所知,

'excludes'
仅适用于包或模块,而不适用于单个文件。

from cx_Freeze import setup, Executable
from glob import glob

files = glob('src/*')  # No files in ../sql/ root

build_options = {
    'include_files': list(zip(files, files)),
    'excludes': ["tkinter", "unittest"]
}

executables = [
    Executable('main.py', base='console', target_name='spotify_shuffler')

]
setup(name='spotify_shuffler',
      version='1.0',
      description='Spotify Shuffler',
      options={'build_exe': build_options},
      executables=executables)

但是,鉴于当我以

.exe
运行该应用程序时该应用程序运行良好,我相信
.env
文件仍与它捆绑在一起,因此如果您知道自己在做什么,则可以窃取。但是,Spotipy 文档非常清楚地表明执行身份验证需要客户端密码。

所以....我该怎么办?我有什么办法可以安全地附加

.env
文件,或者以其他方式提供秘密吗?我会以完全错误的方式解决这个问题吗?我想可以告诉用户只用 Spotify 注册他们自己该死的应用程序并使用他们自己的客户端秘密,但我试图让非技术人员尽可能简单。

很抱歉,如果这种方式太模糊而无法理解,我尽力做到具体,但我不确定正确的方式。任何帮助是极大的赞赏。谢谢!

python authentication oauth-2.0 cx-freeze spotipy
© www.soinside.com 2019 - 2024. All rights reserved.