我正在尝试在 Torii 中使用 github-oauth2 提供程序,但我不知道应该如何设置一些回调。我将跟踪我正在使用的代码以及我对它的理解,希望这可以帮助查明我哪里出错了。
首先,在我的行动中,我正在调用 torii 的open
方法,正如它在文档中所说的那样:
this.get('torii').open('github-oauth2').then((data) => {
this.transitionTo('dashboard')
})
而且,当然,我的设置中有以下设置config/environment.js
:
var ENV = {
torii: {
// a 'session' property will be injected on routes and controllers
sessionServiceName: 'session',
providers: {
'github-oauth2': {
apiKey: 'my key',
redirectUri: 'http://127.0.0.1:3000/github_auth'
}
}
},
}
redirectUri 用于我的 Rails 服务器。我在我的 github 应用程序上有相同的 redirectUri 设置,所以它们匹配。
这是我的服务器上的内容。很可能这就是问题所在。我会在最后谈到症状。
def github
client_id = 'my id'
client_secret = 'my secret'
code = params[:code]
@result = HTTParty.post("https://github.com/login/oauth/access_token?client_id=#{client_id}&client_secret=#{client_secret}&code=#{code}")
@access_token = @result.parsed_response.split('&')[0].split('=')[1]
render json: {access_token: @access_token}
end
所以我按照我应该做的那样发布到 github 的 access_token 端点,然后我得到一个带有访问令牌的结果。然后我将该访问令牌打包为 json。
这样做的结果是 torii 弹出窗口转到 rails 页面:
不幸的是,我希望的是 torii 弹出窗口消失,为我的应用程序提供access_token
,并让代码继续前进并执行我的then
块中的代码。
我哪里错了?