idr*_*ale 12 ruby-on-rails oauth doorkeeper
我正在构建一个受门卫保护的API.
如果我在后端手动创建用户(带密码),然后将以下内容发布到oauth/token,则Doorkeeper会成功为用户生成访问令牌并将其返回:
data = {
username: $("#email_sign_in").val(),
password: $("#password").val(),
grant_type: 'password',
client_id: '880c16e50aee5893446541a8a0b3788....',
client_secret: 'a5108e1a1aeb87d0bb49d33d8c50d....',
provider: 'identity'
}
Run Code Online (Sandbox Code Playgroud)
但是,我正试图了解如何进行注册流程.
我很高兴能够users/create工作,只要它创建用户和密码,但我不知道如何在下一步生成Doorkeeper :: AccessToken,并将其返回给客户端.理想情况下,在用户#create操作中创建用户后,我会oauth/token使用用户的名称和密码重定向到POST ,但我知道您无法重定向到POST.
我已经对门把源进行了挖掘,但是在这些聪明的中间件中我有点迷失了.对此有任何建议非常感谢!
idr*_*ale 25
这是最简单的事情!我试图通过POST过度复杂化,实际上我可以在用户#create中生成DoorKeeper :: AccessToken,然后返回它.
这是生成令牌的代码:
access_token = Doorkeeper::AccessToken.create!(:application_id => application_id, :resource_owner_id => user_id)
Run Code Online (Sandbox Code Playgroud)
我在doorkeeper源代码中挖掘了一些,就像使用标准api方式创建令牌的方式一样,如果您手动执行此操作,您最好使用以下方法。
find_or_create_for(application, resource_owner_id, scopes, expires_in, use_refresh_token)
Run Code Online (Sandbox Code Playgroud)
对于你的情况
access_token = Doorkeeper::AccessToken.find_or_create_for(application: application, resource_owner_id: user_id)
Run Code Online (Sandbox Code Playgroud)
链接到doorkeeper中的doorkeeper find_or_create_for源代码
| 归档时间: |
|
| 查看次数: |
8042 次 |
| 最近记录: |