0

我正在构建一个小型项目来测试将 Facebook 的 Open Graph 集成到我正在构建的 Rails 应用程序中,并且遇到了一个奇怪的问题。我可以将用户(在应用程序内)链接到我的 Facebook 帐户,并成功发布开放图更新,但是如果我断开应用程序与我的 Facebook 帐户的连接,并将其链接到 Facebook 中生成的测试用户,我会收到以下错误:

u.facebook.put_connections("me", "goodgym:accept", mission: "http://4ztq.localtunnel.com/missions/1")
Koala::Facebook::APIError: HTTP 500: Response body: {"error":{"message":"An unexpected error has occurred. Please retry your request later.","type":"OAuthException","code":2}}
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/koala-1.5.0/lib/koala/api.rb:56:in `api'
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/koala-1.5.0/lib/koala/api/graph_api.rb:424:in `graph_call'
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/koala-1.5.0/lib/koala/api/graph_api.rb:134:in `put_connections'
from (irb):3
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/railties-3.2.7/lib/rails/commands/console.rb:47:in `start'
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/railties-3.2.7/lib/rails/commands/console.rb:8:in `start'
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/railties-3.2.7/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

我正在使用我在 user.rb 模型中定义的 Facebook 方法:

def facebook
    @facebook ||= Koala::Facebook::API.new(oauth_token('facebook'))
    block_given? ? yield(@facebook) : @facebook
    rescue Koala::Facebook::APIError => e
        logger.info e.to_s
        nil # or consider a custom null object
end

并且 OmniAuth 已设置为:

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET'], scope: "email, publish_stream"
end

我不明白为什么这可能适用于我的帐户,但不适用于测试用户(据我所知,所有其他设置都是相同的,并且我们都授权了该应用程序)。

为了让您了解一些设置背景,我注册了一个新的 Facebook 应用程序(几乎按照http://railscasts.com/episodes/360-facebook-authentication?view=asciicast上的说明进行操作)

然后我在 Facebook 中创建了一个角色来测试应用程序。

然后,在我的 Rails 应用程序中,我使用 OAuth 连接到 Facebook,它成功生成了一个令牌。

然后我使用 Koala,使用 Facebook 的 Open Graph 发布。

有没有人知道为什么这可能适用于我的帐户,而不是测试角色?如果做不到这一点,任何关于如何更好地调试它的指针将不胜感激。那个意外的错误没有多大用处!

谢谢!

4

0 回答 0