【问题标题】:omniauth for rails and ios authentication用于 rails 和 ios 身份验证的omniauth
【发布时间】:2015-03-10 14:57:51
【问题描述】:

我有一个处理 iOS 客户端 api 的 rails 应用程序。我将设计、omniauth-facebook 用于 Rails。对于 iOS 客户端,我使用 Accounts and Social 框架进行 facebook 身份验证。我已经获取了 oauth 令牌并通过omniauth 回调将其传递给rails 以进行身份​​验证,但我收到了这个错误。有人可以指导我做错什么吗?下面是我得到的日志。

Started POST "/users/auth/facebook/callback" for ::1 at 2015-01-12 10:59:22 +0800 I, [2015-01-12T10:59:22.928323 #99294] INFO -- omniauth: (facebook) Callback phase initiated. E, [2015-01-12T10:59:22.929737 #99294] ERROR -- omniauth: (facebook) Authentication failure! no_authorization_code: OmniAuth::Strategies::Facebook::NoAuthorizationCodeError, must pass either a code (via URL or by an fbsr_XXX signed request cookie) Processing by Users::OmniauthCallbacksController#failure as / Parameters: {"access_token"=>"tokenFromACFBiOS"} Redirected to localhost:3000/users/sign_in Completed 302 Found in 4ms (ActiveRecord: 0.0ms)

这是我的 iOS 和后端代码的要点。 https://gist.github.com/chocnut/ae6f415accd95c8ef415

【问题讨论】:

  • 你能发布你的/config/initializers/omniauth.rb吗?

标签: ios ruby-on-rails facebook devise omniauth-facebook


【解决方案1】:

我能够使用omniauth-facebook-access-token Gem 来实现这一点。 https://github.com/SoapSeller/omniauth-facebook-access-token

在您的设计初始化程序中创建另一个名为“facebook_access_token”的 oauth 提供程序,它可以使用与 facebook 提供程序相同的凭据。

将令牌作为参数“access_token”发布。如果您希望应用程序的最终响应以 JSON 形式返回,请在回调 url 上使用查询字符串 ?format=json。

【讨论】:

    【解决方案2】:

    当你创建一个 facebook(fb) 应用程序时,你应该指出 url 回调的位置,可能你在 fb 中将它设置为:http://localhost:3000/bla/bla 如果你在自己的机器上测试它可以正常工作但能够在您的 ios 设备中测试,然后您应该将 localhost 更改为您机器的 ip(例如 192.168.1.1)

    【讨论】:

      猜你喜欢
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多