android - 如何避免 Android 上的 Oauth 2.0 回调

标签 android ruby-on-rails signpost

我正在使用 signpost 库将 Android 应用程序连接到 Rails Oauth 2.0 Provider。每次我登录时,该应用程序都必须通过网络浏览器启动获得授权。有办法避免吗?

最佳答案

你没有说,但听起来你没有缓存你的访问 token 和 secret 。如果您将这些保存在共享首选项中并在您的应用程序下次运行时使用它们来签署您的请求,您应该能够跳过身份验证阶段并直接访问资源。


编辑:

感谢您的评论 - 一旦您的用户通过身份验证,您可以让他们在您的应用程序中输入 PIN,然后您将交换访问 token 和密码,或者您必须使用实际上只发送 PIN 的初始回调无需用户干预,直接发送给您。

因此,如果您不希望用户必须手动输入 PIN,则只需使用回调即可。只要 token 保持有效,您就永远不需要再次使用回调。

如果您每次登录时都被迫重新授权您的应用程序(正如您的问题明确指出的那样),那么我可以看到四种可能性:

  1. 事实上,您没有正确缓存您的访问 token (或者它正在损坏)
  2. 您的 token 在您登录后很快就会失效(可能它的有效期很短)
  3. 您的实现错误地将您带到登录页面,而实际上它不需要
  4. 您的实现错误地请求了一个新的访问 token (因此使之前的访问 token 无效 - 我有这个特殊的错误让我在我的应用程序中困扰了数周)

在这个阶段,我认为您需要发布一些代码,以便我们可以尝试查看问题出在哪里。

关于android - 如何避免 Android 上的 Oauth 2.0 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7123651/

相关文章:

android - 设备纵横比(媒体查询)不适用于 Droid 2

安卓键码 :KeyEvent. KEYCODE_SEARCH

android - PhoneGap 原生插件生命周期

安卓 OAuth : Exception on retrieveAccessToken()

android - 无法在 Galaxy Tab 2 (7.0") 上检测到音频插孔读卡器

ruby-on-rails - turbo-sprockets-rails3 不支持正确部署回滚

ruby-on-rails - Ruby on Rails Controller WHERE 语句

javascript - 不注入(inject) "data-turbolinks": false

android - Android 的 OAuth

android - 使用 okhttp-signpost 改造 OAuth 签名获取特殊字符的 OAuthMessageSignerException