问题标签 [torii]
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.
ember.js - 使用 ember-simple-auth 和 torii,尽管服务器响应成功,但模态永远不会关闭,会话永远不会更新
我正在尝试允许多个 oauth 提供者使用 ember-cli、ember-simple-auth、torii 并在我的 rails 后端进行设计。一切似乎都正常,但模式永远不会关闭,客户端中的会话也永远不会更新。
复现步骤:
- 单击链接以通过 google-oauth2 提供程序登录
- 使用帐户登录选项列表观察模式打开
- 选择帐户并登录
- 观察模式重定向到本地 Rails 服务器以进行令牌交换(http://localhost:3000/login_profiles/auth/google_oauth2/callback?state=STATE&code=string)
观察由本地 Rails 服务器发出的 json 响应填充的模态窗口
{“access_token”:“8gmvGfHsUx_1mrEAG1Vu”,“login_profile_id”:1}
观察模态保持打开状态。如果手动关闭浏览器会报错:
错误:弹出窗口已关闭,授权被拒绝,或者在窗口关闭之前未收到身份验证消息。
观察到客户端会话对象没有更新
下面包括我的 lib 版本和我的应用程序代码的相关位。任何帮助将不胜感激。
调试:灰烬:1.13.3
调试:Ember 数据:1.13.5
调试:jQuery:2.1.4
调试:Ember 简单身份验证:0.8.0
调试:Ember Simple Auth Torii:0.8.0
服务器:
结尾
客户:
配置/环境.js
路线/application.coffee
模板/应用程序.hbs
鲍尔.json
包.json
ember.js - EmberFire 身份验证和 ToriiFirebaseAdapter
我已经按照 EmberFire指南设置了 torii 提供者的身份验证,它运行良好。我希望在用户通过身份验证后将用户数据存储在 firebase 中,并在整个应用程序中访问用户对象。
我以前用 ember 做过这个,但我不确定如何使用新的 torii 提供程序来做到这一点。
我在想我应该测试用户是否已经在初始化函数中存储在 firebase 中,然后将用户注入控制器/路由。
任何指向我正确方向的帮助或一些示例代码都会有所帮助。
谢谢
ember.js - Torii 会话未定义 - 未注入 ember / firebase 应用程序
在使用 firebase 的 ember cli 项目中,我已经安装(使用ember install
)emberfire 和 torii。config/environment.js
我在我的 firebase 应用程序 url 之后将以下配置放在了我的右边:
我已经将适配器放入app/torii-adapters/application.js
:
但是,当我尝试在任何路由或控制器上获取 torii 的会话变量时:
会话未定义:
据我所知,我已经遵循了firebase 文档/示例,所以我不确定我错过了什么。让 torii 将会话变量注入所有路由和控制器是否需要另一个步骤?
我的堆栈中的版本是:
注意:我目前的 firebase 本身运行良好——我的所有模型都是同步的——所以这不太可能是 firebase 设置错误的结果。此外,this.get('session')
在我的应用程序的任何路由或控制器中的任何位置返回未定义。
javascript - 来自适配器的 Torii 提供者名称?
我有一个 Torii 适配器,它将我的 Facebook 和 Twitter 授权令牌发布回我的 API 以建立会话。在open()
我的适配器的方法中,我想知道提供者的名称,以便围绕如何处理不同类型的提供者编写一些逻辑。例如:
但是,当然,this.provider.name
这是不正确的。有没有办法从适配器方法中获取使用的提供者的名称?提前致谢。
更新:我认为有几种方法可以做到这一点。第一种方法是在调用之前在 localStorage(或 sessionStorage)中设置提供者名称open()
,然后在上述逻辑中使用该值。例如:
另一种方法是为不同的提供者创建单独的适配器。app-name/torii-adapters/facebook-connect.js
Torii 中有代码可以在重新使用之前查找,例如app-name/torii-adapters/application.js
。我会将特定于提供程序的逻辑放在单独的文件中,这样就可以了。但是,我有存储、获取和关闭会话的通用逻辑,所以我现在不确定该放在哪里。
更新 2: Torii 无法在 torii-adapter 下找到不同的适配器(例如 facebook-connect.js、twitter-oauth2.js)。我试图为所有包含通用功能的适配器创建一个父类。回到绘图板...
更新 3:正如@Brou 指出的那样,正如我在与 Torii 团队的交谈中了解到的那样,无论提供者如何,都可以在一个通用的应用程序适配器 ( app-name/torii-adapters/application.js
) 文件中完成获取和关闭会话。如果您需要特定于提供者的会话打开逻辑,您可以拥有多个附加适配器(例如app-name/torii-adapters/facebook-oauth2.js
),这些适配器可能是应用程序适配器的子类(或不是)。
关于 Torii 中的会话生命周期:https ://github.com/Vestorly/torii/issues/219
关于多适配器模式:https ://github.com/Vestorly/torii/issues/221
关于authenticatedRoute()
Torii 0.6.0 中的新 DSL 和自动会话获取:https ://github.com/Vestorly/torii/issues/222
更新 4:我已经在我的个人网站上写下了我的发现和解决方案。它封装了我原来的帖子、@brou 和其他来源的一些想法。如果您有任何问题,请在评论中告诉我。谢谢你。
java - Cannot login to LinkedIn in JavaFX WebView
I'm integrating a website into an existing Java application, which is using JavaFX WebView. Unfortunately login with LinkedIn in the website is broken.
I'm using Torii to handle the login, which opens a popup window, where the user logs in to LinkedIn. It works for normal browsers but in the JavaFX WebView it fails - after the login I end up in an error page by LinkedIn that says
Request Error, We’re sorry, there was a problem with your request. Please make sure you have cookies enabled and try again.
The Webview does support cookies, so that is not the issue.
I suspect the issue is the popup attempts to communicate to the window opener
, and fails under Java.
Do you have any idea how to make it work?
oauth - Google oAuth2 流程 - 我做错了什么?
我有一个托管在http://localhost:4200的 SPA 我还有一个托管在http://localhost:1337 的 API
我的 SPA 使用 Torii 来处理流程,我取回了授权码,然后我尝试将其发送到我的服务器进行处理。
这是我在谷歌的配置:
如您所见,我已经包含了所有可能的 URL,以防万一!
现在,当我将该授权代码传递给我的服务器进行验证然后为客户端提供一个会话时,我总是会返回redirect_uri_mismatch
- 即使我可以在谷歌请求中看到 redirectUrl 正是 oAuth 配置页面中列出的内容:
我做错了吗?我是否应该能够从浏览器启动该过程,然后从服务器验证授权代码?
我可以确认 api 密钥和客户端 id 和密钥都是正确的。
[更新]
javascript - Ember linkedin api 身份验证令牌问题
我一直在使用 torii 插件通过linkedin 进行身份验证。
我能够正确获取授权码,但无法按照本官方教程获取访问令牌:
如果我遵循此选项,我会收到以下错误:
XMLHttpRequest 无法加载https://linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&c ...&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET。请求的资源上不存在“ Access-Control-Allow-Origin ”标头。因此,不允许访问 Origin 'my-host.com:4200'。
},
如果我遵循这个其他选项,我会收到此错误:
拒绝执行来自' https://linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&c ...llback&callback=jQuery1113038602466485463083_1445461451847&_=1445461451848' 的脚本,因为它的MIME 类型('application/json')是不可执行的,并且严格的 MIME 类型检查已启用。
最后一个选项返回网络选项卡上的 json,但由于这个问题,我无法处理它。
LinkedIn OAuth2 仅返回 json,这就是我在使用“jsonp”时遇到问题的原因。另一方面,它也不是 cors,这就是我在第一个示例中遇到问题的原因。
你有什么想法可以帮我解决这个问题吗?
谢谢 :)
facebook - 无法获取当前用户使用app facebook graph的好友
所以我没有使用 facebook 的 SDK 或任何东西。我正在发出简单的 http 请求。
当我向我发出一个 HTTP 请求时,/me/friends
我得到一个空数组响应。data: []
当前用户有一个朋友也在使用该应用,当前用户实际上有很多朋友在使用该应用。current_user 是应用程序的管理员,并且应用程序已上线。
之后我也尝试过请求user_friends
许可,我得到以下结果。
所以仍然没有得到那些也安装了该应用程序的朋友。他们需要启用某些东西吗?我已经进入了我安装的应用程序并制作了它,以便其他人可以看到我使用该应用程序。每个朋友也需要这样做吗?
如果其他人遇到这个问题,很高兴知道可能的解决方案!
session - 刷新后 Torii 会话不会持续存在
目前,我的 Ember-cli 应用程序在刷新后注销。我已经修改了很多代码以尝试使其正常工作,但没有任何帮助。如有必要,我将尝试使用其他提供商实现身份验证。
我有一个应用程序路由,它只是注销和登录路由,它处理登录,因为客户端想要对其进行样式设置。
我的 config/environment.js 文件如下所示:
应用程序/适配器/application.js:
应用程序/鸟居适配器/application.js:
应用程序/路由/application.js:
应用程序/路由/login.js:
是的,目前,登录和注销工作正常,但我无法在会话中间刷新页面,否则它会自动注销我。
提前感谢任何人。
ember.js - 在使用 Torii 进行身份验证后,Ember Simple Auth 立即使会话无效
我正在尝试使用我自己的 OAuth 流程和 Ember-Simple-Auth 设置 Torii。我可以获得成功的身份验证事件,但在我进行身份验证后,invalidateSession
触发器立即被触发,导致我的会话结束。我可以通过拦截(其中有)sessionInvalidated()
来看到这一点。/app/routes/application.js
ApplicationRouteMixin
你们有人遇到过这个吗?是否有一些特殊的东西会导致立即进行会话验证?任何建议将不胜感激。
编辑:我认为这与 torii 弹出代码有关,因为第一个返回有效,但第二个无效。有什么想法吗?