【问题标题】:Learning Doorkeeper学习门卫
【发布时间】:2015-10-29 03:03:10
【问题描述】:

我正在尝试为代理应用程序设置 API(用户可以在登录时购买/出售商品)。开发人员应该能够在我的应用程序之上构建。旨在使用设计和门卫宝石。我已经设置了 Devise(所以我的用户必须登录/注销他们的帐户)。但我在理解如何使用 Doorkeeper gem 时遇到问题。

到目前为止,我已经阅读了以下内容

RFC 6749

Doorkeeper wiki

Tutorial for Oauth 2 on Rails(没有太大帮助,因为我在执行步骤时遇到了困难)

Oauth with Doorkeeper railscast

问题是 - 我仍然不太了解如何设置我的服务器、创建其他开发人员可以在其上注册他们的应用程序的页面、获取他们的密钥等。

我缺少什么,我可以学习任何综合教程来设置我的 API 以供开发人员注册他们的应用程序、代表用户登录和执行买/卖订单?

【问题讨论】:

    标签: ruby-on-rails oauth doorkeeper


    【解决方案1】:

    注册申请

    Doorkeeper 带有集成的控制器/视图来管理 oauth 应用程序、请求访问令牌和授权。

    如果您正确安装和配置了门禁,这些路由将在您的 rails 应用程序中定义:

    GET       /oauth/authorize/:code
    GET       /oauth/authorize
    POST      /oauth/authorize
    DELETE    /oauth/authorize
    POST      /oauth/token
    POST      /oauth/revoke
    resources /oauth/applications
    GET       /oauth/authorized_applications
    DELETE    /oauth/authorized_applications/:id
    GET       /oauth/token/info
    

    (见https://github.com/doorkeeper-gem/doorkeeper#routes

    当您转到/oauth/applications 时,您可以添加或删除 oauth 应用程序。这可能有助于解决您的问题

    创建其他开发者可以注册他们的应用程序的页面,获取他们的密钥

    但是,这些是为后端或快速设置目的而设计的。不建议在生产中使用它。您可以根据这些创建控制器/视图。

    如果您想了解有关自定义这些控制器/视图的更多信息,请查看以下链接:

    设置您的 API

    如果您不使用Rails API mode,我建议您使用grape gem,它是一个在Ruby 中构建API 的框架。然后,您可以将 Grape::API 应用程序挂载到 Rails 应用程序的路由。

    然后,当用户注册他们的应用程序时,他们将要求为他们自己的应用程序的每个用户授予访问权限(授权码)。 /oauth/authorize 路线就是这样。他们将使用 OAuth2 客户端正确构建 authorize_url 并设置他们的应用程序。

    所有这些流程都符合 OAuth2 框架 (RFC 6749)。但正如你所说;你读过它,所以你应该明白幕后发生了什么。

    您所要做的就是提供您的 API 端点:

    # in your API class that extends Grape::API
    post 'orders/:id/buy' do
        # authorize a specific scope, this is just an example,
        # this might not suit your app design
        doorkeeper_authorize! :buy_order
        # you can get the resource owner id with and other token infos,
        # or put that in a helper method
        current_user = User.find(doorkeeper_token.resource_owner_id)
        # buy order logic goes here...
    end
    
    post 'orders/:id/sell' do
        doorkeeper_authorize! :sell_order
        current_user = User.find(doorkeeper_token.resource_owner_id)
        # sell order logic goes here...
    end
    

    希望能帮到你!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2023-03-23
      • 1970-01-01
      • 2016-11-28
      • 2021-05-17
      • 2016-10-27
      • 1970-01-01
      相关资源
      最近更新 更多