【问题标题】:How to use doorkeeper with an android client?如何在安卓客户端中使用门卫?
【发布时间】:2014-06-15 10:10:44
【问题描述】:

我正在构建一个应用程序,它包含一个连接到我的 rails 应用程序的移动客户端(Android 原生应用程序)。我需要一种方法让用户使用 android 应用程序登录和注册我的 rails 应用程序。所以我在我的 Rails 应用程序上安装了门卫并设计了 gems,并按照说明here 来看看事情是如何工作的。正如您在authorization code flow page 中看到的那样,有多个步骤,例如注册客户端、请求授权、请求访问令牌。
我的问题是如何从我的 android 应用程序执行所有这些步骤。任何帮助深表感谢。谢谢

【问题讨论】:

    标签: android ruby-on-rails doorkeeper


    【解决方案1】:

    对于注册(注册),您可以在用户控制器中创建一个方法来执行此操作。或者您可以自定义 Devise 的注册页面,使其在移动视图中看起来更好,并在应用程序的 web 视图中进行注册。

    对于 Doorkeeper,要么按照您链接的常规流程进行操作,要么提供更简单的方法。我所做的是

    1. activate the refresh token - 这将允许用户获取他的访问令牌和刷新令牌,用于在访问令牌过期后重新生成访问令牌的令牌。这样您就不会在您的应用上保留用户的登录注册,只保留令牌。

    2. 使用 skip_authorization 在 config/initializers/doorkeeper.rb 中为某些应用添加白标签,以允许对某些特定应用进行自动授权。您可以允许对所有应用进行自动授权,但我建议您将其中一些应用列入白名单:

      skip_authorization do |client|
        whitelisted_apps = ['app1_id', 'app2_id']
        whitelisted_apps.include? client.application.uid
      end
      

    我希望这会有所帮助。

    【讨论】:

    • 感谢您的回复。实际上我的问题是如何在 android 上进行 oauth 流程。搜索后我发现了这个 scribe-java 库link。但是我还没有弄清楚如何将这三件事放在一起。意思是设计、看门人和抄写员。
    • 我明白了。我实际上将上述工作流程与移动应用程序一起使用。 iOS 程序员放弃了第 3 方库,转而采用简单的 REST API 调用,将访问令牌和刷新令牌存储在本地。之后,他唯一做的就是每当遇到来自服务器的 401 HTTP 代码时,就使用刷新令牌获取一对新的访问 + 刷新令牌。您到底在哪里卡住了,所以我可以提供更多关于主题的帮助?
    • 我实际上不明白 oauth 是如何工作的。在浏览了官方文档后,我意识到我需要使用密码授予流程。但似乎还有另一个问题出现。我在 doorkeeper.rb 文件中取消了 use_refresh_token 的注释。所以现在我对 api 的第一个请求是成功的,但是当我触发另一个请求时,它会以 401 未经授权的方式响应。我是否必须使用刷新令牌来为每个请求获取新的访问令牌?
    • 不,访问令牌用于身份验证,刷新令牌用于在您使用的令牌过期后获取新令牌。我的猜测是您要么使用刷新令牌而不是访问令牌进行身份验证,要么过期时间太短。
    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多