无法 add/publish 在 Facebook 上订阅实时更新
Not able to add/publish subscrption on facebook for real time updates
我正在尝试通过 Graph API Explorer add/publish 订阅 real time updates。这是我要求的 POST url
https://graph.facebook.com/v2.2/{app_id}/subscriptions/?object=user&fields=friends&verify_token=thisisaverifystring&access_token=my_app_token&callback_url=http://mydomain/auth/facebook/callback/
但我收到错误响应:
{
"error":{
"message": "(#2200) 回调验证失败:",
"type": "OAuthException",
"code": 2200
}
}
我还在我的路由中定义了两次相同的回调 URL 来处理 GET 和 POST 请求。我上面提到的 API 请求正在触发我的回调 url 但我在服务器日志中也遇到错误
在 2015 年 2 月 12 日开始为 66.220.158.118 获取“/auth/facebook/callback/?hub.mode=subscribe&hub.challenge=246450618&hub.verify_token=thisisaverifystring”19:24:12 +0530
我,[2015-02-12T19:24:12.530395 #18960] 信息——omniauth:(facebook)回调阶段启动。
E,[2015-02-12T19:24:12.530916 #18960] 错误——omniauth:(facebook)身份验证失败! no_authorization_code:OmniAuth::Strategies::Facebook::NoAuthorizationCodeError,必须传递 code
(通过 URL 或 fbsr_XXX
签名请求 cookie)
OmniAuth::Strategies::Facebook::NoAuthorizationCodeError(必须传递 code
(通过 URL 或 fbsr_XXX
签名请求 cookie):
omniauth-facebook (2.0.0) lib/omniauth/strategies/facebook.rb:151:in with_authorization_code!'
omniauth-facebook (2.0.0) lib/omniauth/strategies/facebook.rb:71:in
callback_phase'
omniauth (1.2.2) lib/omniauth/strategy.rb:227:in callback_call'
omniauth (1.2.2) lib/omniauth/strategy.rb:184:in
call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in call'
omniauth (1.2.2) lib/omniauth/strategy.rb:186:in
call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in call'
omniauth (1.2.2) lib/omniauth/builder.rb:59:in
call'
机架 (1.5.2) lib/rack/etag.rb:23:in call'
rack (1.5.2) lib/rack/conditionalget.rb:25:in
call'
机架 (1.5.2) lib/rack/head.rb:11:in call'
remotipart (1.2.1) lib/remotipart/middleware.rb:27:in
call'
动作包 (4.1.8) lib/action_dispatch/middleware/params_parser.rb:27:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/flash.rb:254:in
call'
机架 (1.5.2) lib/rack/session/abstract/id.rb:225:in context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in
call'
actionpack (4.1.8) lib/action_dispatch/middleware/cookies.rb:560:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/callbacks.rb:29:in
调用中的块'
activesupport (4.1.8) lib/active_support/callbacks.rb:82:in run_callbacks'
actionpack (4.1.8) lib/action_dispatch/middleware/callbacks.rb:27:in
call'
动作包 (4.1.8) lib/action_dispatch/middleware/reloader.rb:73:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/remote_ip.rb:76:in
call'
动作包 (4.1.8) lib/action_dispatch/middleware/debug_exceptions.rb:17:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/show_exceptions.rb:30:in
call'
railties (4.1.8) lib/rails/rack/logger.rb:38:in call_app'
railties (4.1.8) lib/rails/rack/logger.rb:20:in
调用中的阻塞'
activesupport (4.1.8) lib/active_support/tagged_logging.rb:68:in block in tagged'
activesupport (4.1.8) lib/active_support/tagged_logging.rb:26:in
已标记'
activesupport (4.1.8) lib/active_support/tagged_logging.rb:68:in tagged'
railties (4.1.8) lib/rails/rack/logger.rb:20:in
call'
动作包 (4.1.8) lib/action_dispatch/middleware/request_id.rb:21:in call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in
call'
机架 (1.5.2) lib/rack/runtime.rb:17:in call'
activesupport (4.1.8) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in
call'
机架 (1.5.2) lib/rack/lock.rb:17:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/static.rb:84:in
call'
机架 (1.5.2) lib/rack/sendfile.rb:112:in call'
railties (4.1.8) lib/rails/engine.rb:514:in
call'
railties (4.1.8) lib/rails/application.rb:144:in call'
rack (1.5.2) lib/rack/lock.rb:17:in
call'
机架 (1.5.2) lib/rack/content_length.rb:14:in call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in
service'
/home/sshinde/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/httpserver.rb:138:in service'
/home/sshinde/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/httpserver.rb:94:in
运行'
/home/sshinde/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/server.rb:295:在start_thread'
中的`块中
我假设验证令牌有问题,但我不确定如何获得此令牌。
请评论
您的回调 url 似乎没有实现,您需要实际创建它。您正在使用来自 OmniAuth 的登录 url,这显然是在请求与您的订阅回调无关的代码或签名请求。
理想情况下,这些 url 应该有所不同,我看不到使用订阅回调 url.
超载您的登录 url 端点有任何直接好处
在您的登录 url 代码中,您
- 验证 hub.verify_token 是否与您在创建订阅时提供的匹配?
- 呈现对仅包含 hub.challenge 值的 GET 请求的响应?
我正在尝试通过 Graph API Explorer add/publish 订阅 real time updates。这是我要求的 POST url
https://graph.facebook.com/v2.2/{app_id}/subscriptions/?object=user&fields=friends&verify_token=thisisaverifystring&access_token=my_app_token&callback_url=http://mydomain/auth/facebook/callback/
但我收到错误响应:
{ "error":{ "message": "(#2200) 回调验证失败:", "type": "OAuthException", "code": 2200 } }
我还在我的路由中定义了两次相同的回调 URL 来处理 GET 和 POST 请求。我上面提到的 API 请求正在触发我的回调 url 但我在服务器日志中也遇到错误
在 2015 年 2 月 12 日开始为 66.220.158.118 获取“/auth/facebook/callback/?hub.mode=subscribe&hub.challenge=246450618&hub.verify_token=thisisaverifystring”19:24:12 +0530
我,[2015-02-12T19:24:12.530395 #18960] 信息——omniauth:(facebook)回调阶段启动。
E,[2015-02-12T19:24:12.530916 #18960] 错误——omniauth:(facebook)身份验证失败! no_authorization_code:OmniAuth::Strategies::Facebook::NoAuthorizationCodeError,必须传递 code
(通过 URL 或 fbsr_XXX
签名请求 cookie)
OmniAuth::Strategies::Facebook::NoAuthorizationCodeError(必须传递 code
(通过 URL 或 fbsr_XXX
签名请求 cookie):
omniauth-facebook (2.0.0) lib/omniauth/strategies/facebook.rb:151:in with_authorization_code!'
omniauth-facebook (2.0.0) lib/omniauth/strategies/facebook.rb:71:in
callback_phase'
omniauth (1.2.2) lib/omniauth/strategy.rb:227:in callback_call'
omniauth (1.2.2) lib/omniauth/strategy.rb:184:in
call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in call'
omniauth (1.2.2) lib/omniauth/strategy.rb:186:in
call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in call'
omniauth (1.2.2) lib/omniauth/builder.rb:59:in
call'
机架 (1.5.2) lib/rack/etag.rb:23:in call'
rack (1.5.2) lib/rack/conditionalget.rb:25:in
call'
机架 (1.5.2) lib/rack/head.rb:11:in call'
remotipart (1.2.1) lib/remotipart/middleware.rb:27:in
call'
动作包 (4.1.8) lib/action_dispatch/middleware/params_parser.rb:27:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/flash.rb:254:in
call'
机架 (1.5.2) lib/rack/session/abstract/id.rb:225:in context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in
call'
actionpack (4.1.8) lib/action_dispatch/middleware/cookies.rb:560:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/callbacks.rb:29:in
调用中的块'
activesupport (4.1.8) lib/active_support/callbacks.rb:82:in run_callbacks'
actionpack (4.1.8) lib/action_dispatch/middleware/callbacks.rb:27:in
call'
动作包 (4.1.8) lib/action_dispatch/middleware/reloader.rb:73:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/remote_ip.rb:76:in
call'
动作包 (4.1.8) lib/action_dispatch/middleware/debug_exceptions.rb:17:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/show_exceptions.rb:30:in
call'
railties (4.1.8) lib/rails/rack/logger.rb:38:in call_app'
railties (4.1.8) lib/rails/rack/logger.rb:20:in
调用中的阻塞'
activesupport (4.1.8) lib/active_support/tagged_logging.rb:68:in block in tagged'
activesupport (4.1.8) lib/active_support/tagged_logging.rb:26:in
已标记'
activesupport (4.1.8) lib/active_support/tagged_logging.rb:68:in tagged'
railties (4.1.8) lib/rails/rack/logger.rb:20:in
call'
动作包 (4.1.8) lib/action_dispatch/middleware/request_id.rb:21:in call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in
call'
机架 (1.5.2) lib/rack/runtime.rb:17:in call'
activesupport (4.1.8) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in
call'
机架 (1.5.2) lib/rack/lock.rb:17:in call'
actionpack (4.1.8) lib/action_dispatch/middleware/static.rb:84:in
call'
机架 (1.5.2) lib/rack/sendfile.rb:112:in call'
railties (4.1.8) lib/rails/engine.rb:514:in
call'
railties (4.1.8) lib/rails/application.rb:144:in call'
rack (1.5.2) lib/rack/lock.rb:17:in
call'
机架 (1.5.2) lib/rack/content_length.rb:14:in call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in
service'
/home/sshinde/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/httpserver.rb:138:in service'
/home/sshinde/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/httpserver.rb:94:in
运行'
/home/sshinde/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/webrick/server.rb:295:在start_thread'
我假设验证令牌有问题,但我不确定如何获得此令牌。
请评论
您的回调 url 似乎没有实现,您需要实际创建它。您正在使用来自 OmniAuth 的登录 url,这显然是在请求与您的订阅回调无关的代码或签名请求。
理想情况下,这些 url 应该有所不同,我看不到使用订阅回调 url.
超载您的登录 url 端点有任何直接好处在您的登录 url 代码中,您
- 验证 hub.verify_token 是否与您在创建订阅时提供的匹配?
- 呈现对仅包含 hub.challenge 值的 GET 请求的响应?