gpt4 book ai didi

oauth - Elixir Phoenix 设置和使用环境变量

转载 作者:行者123 更新时间:2023-12-01 16:38:38 25 4
gpt4 key购买 nike

我有一个正在对 github 进行 OAuth 调用的 phoenix 应用程序。我想将我的 key 存储为环境变量,这样我就可以将它们置于版本控制之外。

我创建了一个名为 .env 的文件,我在其中定义了我的私钥:

export GITHUB_CLIENT_ID="891538_my_key_bf0055"

我试图在我的 config.exs 文件中获取我的私钥,该文件负责使用 System.Config 配置您的应用程序。

配置:ueberauth,Ueberauth.Strategy.Github.OAuth,
client_id: System.get_env("GITHUB_CLIENT_ID"),
client_secret: System.get_env("GITHUB_SECRET_ID")

长话短说,我的 Controller 几乎可以与 github 握手以获取请求。当我向 github 请求授权我的应用程序 http://localhost:4000/auth/github 时,我几乎可以发出请求并且我从 github 看到一个 404 页面。我注意到该网址没有 client_id!

我访问回调的路由器是

  scope "/auth", Discuss do
pipe_through :browser # Use the default browser stack

# make request to github, google, fb
get "/:provider", AuthController, :request
get "/:provider/callback", AuthController, :callback
end

我得到的是没有 值的 URL
https://github.com/login/oauth/authorize ?client_id=&redirect_uri=http%3A%2F%2Flocalhost%3A4000%2Fauth%2Fgithub%2Fcallback&response_type=code&scope=user%2Cpublic_repo`

如果我不在 config.exs 中使用环境变量而是使用字符串值,请求将按预期工作。

如何在 Phoenix 中使用环境变量?

最佳答案

如果使用 Distillery 版本,您可能希望避免使用 config.exs 文件中的 System.get_env/1,因为它将存储环境的值在构建时而不是运行时变量。

prod.exs配置中,可以使用

config :ueberauth, Ueberauth.Strategy.Github.OAuth,
client_id: "${GITHUB_CLIENT_ID}",
client_secret: "${GITHUB_SECRET_ID}"

然后生成带有 REPLACE_OS_VARS=true 环境变量集的版本。

Distillery Docs

关于oauth - Elixir Phoenix 设置和使用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44512534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com