У меня есть приложение Phoenix, которое выполняет вызов OAuth в github. Я хочу хранить свои секретные ключи как переменные среды, чтобы не допустить их контроля версий.
Я создал файл с именем .env
, в котором я определяю свой закрытый ключ:
export GITHUB_CLIENT_ID="891538_my_key_bf0055"
Я пытаюсь получить свой закрытый ключ в моем config.exs
файле, который отвечает за настройку вашего приложения с помощью System.Config
.
config :ueberauth, Ueberauth.Strategy.Github.OAuth,
client_id: System.get_env("GITHUB_CLIENT_ID"),
client_secret: System.get_env("GITHUB_SECRET_ID")
Короче говоря, мой контроллер почти может рукопожатие с github для запроса. Когда я делаю запрос в github для авторизации моего приложения http://localhost:4000/auth/github
, я почти могу сделать запрос и вижу страницу 404 из github. Я заметил, что в URL-адресе нет 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 без value
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?