2012-04-10 27 views
5

Estoy tratando de obtener el token de acceso de Oauth para Facebook programáticamente en ruby.cómo obtener el token de acceso de Oauth para facebook usando ruby ​​

Mi código es el siguiente:

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"}) 

Cuando trato de ejecutar el código anterior rubí, estoy recibiendo la siguiente excepción

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/[email protected]/gems/oauth2-0.5.2/lib/oauth2/clie 
nt.rb:129:in `get_token': OAuth2::Error (OAuth2::Error) 
     from /home/ec2-user/.rvm/gems/[email protected]/gems/oauth2-0.5.2/li 
b/oauth2/strategy/auth_code.rb:29:in `get_token' 
     from oauth.rb:16:in `<main>' 

Cualquier ayuda es muy apreciada ya que he pasado más de un día mientras trata de resolver esto.

+0

¡cualquier idea es muy apreciada! –

+0

Debe elevar su tasa de aceptación para obtener respuestas. –

+0

Pero aquí hay algo para que comiences: tus redirect_uri parecen ser Facebook.com, pero esas deberían ser TU url. –

Respuesta

2

¿Ha intentado poner como redirect_uri en lugar de localhost:3000 su dirección IP real ex. 231.61.233.57:3000? Además, podría intentar utilizar el túnel ssh para fines de prueba, de modo que su aplicación localhost esté disponible en todo el mundo. Mira esto http://progrium.com/localtunnel/. Cuando obtenga la dirección IP de esta herramienta, intente configurarla como redirect_uri param.

+0

Acepto que el 'redirect_uri' es probablemente el problema. La API que realiza la redirección solo puede redirigir a URI asociados con la aplicación autorizada. (No sé si Facebook hace esto, pero otras API OAuth con las que he trabajado). – pjmorse

Cuestiones relacionadas