Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于rails和ios身份验证的omniauth_Ios_Ruby On Rails_Facebook_Devise_Omniauth Facebook - Fatal编程技术网

用于rails和ios身份验证的omniauth

用于rails和ios身份验证的omniauth,ios,ruby-on-rails,facebook,devise,omniauth-facebook,Ios,Ruby On Rails,Facebook,Devise,Omniauth Facebook,我有一个rails应用程序,可以处理iOS客户端的api。我使用Desive,omniauth facebook来制作rails。对于iOS客户端,我使用帐户和社交框架进行facebook身份验证。我抓取了oauth令牌,并通过omniauth回调将其传递给rails进行身份验证,但我遇到了这个错误。有人能告诉我我做错了什么吗?下面是我得到的日志 Started POST "/users/auth/facebook/callback" for ::1 at 2015-01-12 10:59:22

我有一个rails应用程序,可以处理iOS客户端的api。我使用Desive,omniauth facebook来制作rails。对于iOS客户端,我使用帐户和社交框架进行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和后端代码的要点

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

我能够使用omniauth facebook访问令牌Gem实现这一点。

在Desive初始值设定项中创建另一个名为“facebook\u access\u token”的oauth提供商,它可以使用与facebook提供商相同的凭据


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

能否发布您的
/config/initializers/omniauth.rb