5

我试图在 ruby​​ 中以编程方式获取 facebook 的 oauth 访问令牌。

我的代码如下:

client = OAuth2::Client.new(
  APP_ID,
  SECRET_ID,
  :authorize_url => "/dialog/oauth",
  :token_url => "/oauth/access_token",
  :site => "https://www.facebook.com/"
)

code = client.auth_code.authorize_url(:redirect_uri => "http://www.facebook.com/")
token = client.auth_code.get_token(code, :redirect_uri => "https://graph.facebook.com/")
OAuth2::AccessToken.new(client, token.token, {:mode => :query, :param_name =>"oauth_token"})

当我尝试运行上述 ruby​​ 代码时,出现以下异常

https://www.facebook.com/dialog/oauth?response_type=code&client_id=APP_ID
51&redirect_uri=http%3A%2F%2Fwww.facebook.com%2F

/home/ec2-user/.rvm/gems/ruby-1.9.3-p0@samples/gems/oauth2-0.5.2/lib/oauth2/clie
nt.rb:129:in `get_token': OAuth2::Error (OAuth2::Error)
        from /home/ec2-user/.rvm/gems/ruby-1.9.3-p0@samples/gems/oauth2-0.5.2/li
b/oauth2/strategy/auth_code.rb:29:in `get_token'
        from oauth.rb:16:in `<main>'

非常感谢任何帮助,因为我花了一天多的时间试图解决这个问题。

4

1 回答 1

2

您是否尝试将其设置为 redirect_uri 而不是localhost:3000您的真实 IP 地址ex. 231.61.233.57:3000?此外,您可以尝试使用 ssh 隧道进行测试,这样您的 localhost 应用程序将在全球范围内可用。看看这个http://progrium.com/localtunnel/。当您将从该工具中获取 IP 地址时,请尝试将 redirect_uri 参数设置为它。

于 2012-04-19T16:03:18.910 回答