问题标签 [ueberauth]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
heroku - Phoenix + Ueberauth + Google + Heroku:内部服务器错误
我在 Elixir 和 Phoenix 相对较新(这可能是我不知道发生了什么的原因)。
我正在尝试使用 Google 身份验证在 Phoenix 应用程序上设置 Ueberauth。
我尽我所能忠实地遵循示例应用程序https://github.com/ueberauth/ueberauth_example 。
就像 Phoenix 文档说的那样,我为 Heroku 准备了应用程序。主页正确显示。当我单击按钮开始身份验证过程时,我得到了谷歌和谷歌询问我是否要进行身份验证。当我单击是时,我得到一个内部服务器错误,我真的不知道它发生了什么。
这是我在日志中的内容:
2016-03-24T04:02:14.429507+00:00 app[web.1]: 04:02:14.429 [error] #PID<0.364.0> 运行 GreatStrides.Endpoint 终止
2016-03-24T04:02:14.429520+00:00 应用程序 [web.1]: 服务器: MYHEROKUAPP:80 (http)
2016-03-24T04:02:14.429521+00:00 应用 [web.1]:请求:GET /auth/google/callback?code=ACODEGOESHERE
2016-03-24T04:02:14.429522+00:00 app[web.1]: ** (exit) exited in: :gen_server.call(:hackney_manager, {:new_request, #PID<0.364.0>, #Reference <0.0.1.2373>, {:client, :undefined, {:metrics_ng, :metrics_dummy}, :hackney_ssl_transport, 'accounts.google.com', 443, "accounts.google.com", [], nil, nil, nil , true, :hackney_pool, 5000, false, 5, false, 5, nil, nil, nil, :undefined, :start, nil, :normal, false, false, false, :undefined, false, nil, :waiting, nil , 4096, "", [], :undefined, nil, nil, nil, nil, :undefined, nil}}, :infinity)
2016-03-24T11:54:59.195968+00:00 app[web.1]: ** (EXIT) 无进程
这里发生了什么?
elixir - 如何在 Phoenix 框架中使用 Ueberauth 和 Guardian 对用户进行身份验证
是否有任何可用的教程或帮助可供我在 Phoenix 框架中使用 Ueberauth 和 Guardian 的身份验证用户使用。
我看过以下帖子,但主要是关于瘾君子和护照库
elixir - 您如何为 ueberauth 身份进行单独的注册回调
ueberauth_identity有一个登录和注册的单一回调示例,但这会导致错误处理。有没有办法进行单独的注册回调?
phoenix-framework - Ueberauth 插件无法分配 auth 和 conn 失败
我在我正在构建的库中使用Ueberauth来简化在 Phoenix 中添加身份验证。
我已经设置了一个示例 repo,您可以在v2 分支中看到代码
我现在正在尝试实施 Ueberauth Identity 策略。看来,虽然我已将 Ueberauth 插件添加到控制器中ueberauth_failure
,ueberauth_auth
但 conn 的assigns
. 相反,conn.assigns
是%{}
。
我期待这个示例 curl 请求:
curl -i -X POST localhost:4000/identity/callback -d '{"user": {"email": "test@example.com", "password": "password"}}'
至少其中一个(ueberauth_failure
或ueberauth_auth
)将被设置?
Ueberauth 在这里配置:https://github.com/britton-jb/test_sentinel_example/blob/master/config/config.exs#L58
执行该策略的控制器是https://github.com/britton-jb/sentinel/blob/v2/lib/sentinel/controllers/json/session_controller.ex
控制器和路由暴露在https://github.com/britton-jb/test_sentinel_example/blob/master/web/router.ex#L26
通过这个宏:https://github.com/britton-jb/sentinel/blob/v2/lib/sentinel.ex#L50
token - 如何让 Guardian 在第二个应用程序 system2system 中检测令牌?
我无法让应用程序找到另一个应用程序的生成令牌。两个应用程序(App1 和 App2)都存在于一个保护伞中,并且共享相同的配置和密钥。
我在会话中设置了用户身份验证,可以通过以下方式找到 Guardian 令牌:
令牌位于生成应用程序“App1”中。但是,当我在“App2”中使用相同的密钥实现相同的 Guardian 配置时,App2 找不到 App1 生成的令牌。
我的配置:
App2 序列化程序被 App1 中的 App1 序列化程序替换。
(我正在使用当前的 Guardian,0.14;与 Phoenix 1.2.1 一起使用。)
编辑:此外,App1 和 App2 应该稍后在不同的服务器上运行。
- 如何让 App2 检测和使用 App1 生成的令牌?
- 我需要连接哪些(附加)部件才能正常工作?
google-oauth - 如何通过 ueberauth_google 提交 prompt=consent
当用户已经同意应用程序时(例如,当用户在初次尝试期间放弃创建帐户,然后再次尝试),除非prompt=consent
通过,否则 Google 不会再次提示同意(请参阅文档)。在没有提示同意的情况下,Google 不会向调用服务器提供刷新令牌。如果没有刷新令牌,服务器就无法与用户的资源交互(例如代表用户发送电子邮件)。
ueberauth_google有一个设置机制approval_prompt
,但这是一个不同的参数prompt
。有没有办法prompt=consent
使用 ueberauth_google 发送?(注意,如果我添加%26prompt%3Dconsent
到 ueberauth_google 发送给我的 url,那么 Google 会提示我并且我们的服务器会收到刷新令牌。)
authentication - 两个根页面;一种用于未经身份验证的用户,一种用于经过身份验证的用户
我想知道如何使用 Phoenix 在同一个根“/”中实现两个页面?一种用于未经身份验证的用户,另一种用于经过身份验证的用户。发生这种情况的用例示例是 LinkedIn 和 Facebook,其中登录页面在“/”上提供,应用程序在登录后在“/”上提供。
我使用 Guardian 进行身份验证,并将我的路由器设置为:
FrontController 服务于未经身份验证的用户可访问的页面(例如登录页面),而 ApplicationController 服务于实际应用程序。
当 ApplicationController 提供“/”而不是“/page”时,会抛出“此子句无法匹配,因为第 1 行的前一个子句始终匹配”错误。
我想象使用 if 语句和一个控制器来为两个页面提供服务,不幸的是我找不到有关如何实施这种策略的文档。
elixir - 文件 web/controllers/auth_controller.ex 未定义函数插件/1 上的编译错误
神秘的错误信息
在尝试ueberauth
为我们的项目实施时,我们遇到了以前从未见过的错误消息。(请注意,这并非特定ueberauth
于此错误,在任何未能包含控制器“助手”的控制器中都会出现)
确切的错误信息是:
代码快照:https ://github.com/dwyl/auth/pull/9/commits/e2550c558832ff9c4a442b570224a1ccacbfdb02
回答:
忘记:controller
在我们的控制器文件中包含助手...
感谢 Sam Houston 查看代码并发现如何修复它。 https://github.com/dwyl/auth/pull/9/commits/823f7d79561f733a9d131b26a3f6a4d74da59842
case
向某人发布此问题 + 答案会else
在他们的 Phoenix 项目中看到此错误消息,并且在谷歌搜索时找不到答案。
oauth - Elixir Phoenix 设置和使用环境变量
我有一个凤凰应用程序正在对 github 进行 OAuth 调用。我想将我的密钥存储为环境变量,这样我就可以将它们排除在版本控制之外。
我创建了一个名为.env
我定义我的私钥的文件:
我试图在我的文件中获取我的私钥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
,我几乎可以发出请求,并且看到来自 github 的 404 页面。我注意到网址没有client_id
!
我访问回调的路由器是
我得到的是没有value
https://github.com/login/oauth/authorize的 URL ?client_id= &redirect_uri=http%3A%2F%2Flocalhost%3A4000%2Fauth%2Fgithub%2Fcallback&response_type=code&scope=user%2Cpublic_repo`
如果我不使用环境变量config.exs
,而是使用字符串 value,则请求会正常工作。
如何在 Phoenix 中使用环境变量?
elixir - 模块:unicode_util 不可用 Phoenix/elixir
我正在尝试使用Ueberauth库进行 GitHub 登录。在登录功能中,我收到一条错误消息
“功能:unicode_util.lowercase/1 未定义(模块:unicode_util 不可用)”
我用过的代码