2012-04-27 25 views
5

Estoy trabajando en la autenticación de Twitter, todo parece funcionar bien hasta que llego al getAccessToken que devuelve Array ([ ] =>).Twitter OAUTH devuelve una matriz vacía

lo que he hecho:

  1. Primera fase:

    $connection = new TwitterOAuth('xxxxxxxx','xxxxxxxx'); 
    
    $temporary_credentials = $connection->getRequestToken('http://example.com/profile.php?passurl=1'); 
    
    $redirect_url = $connection->getAuthorizeURL($temporary_credentials); 
    
    $_COOKIE['oauth_token'] = $temporary_credentials['oauth_token']; 
    
    $_COOKIE['oauth_token_secret'] = $temporary_credentials['oauth_token_secret']; 
    
    header("Location: $redirect_url"); 
    
  2. segunda fase (aquí es donde me encuentro con el problema)

    $connection = 
         new TwitterOAuth(
           'xxxxxxxxxx', 
           'xxxxxxxxxx', 
           $_COOKIE['oauth_token'], 
           $_COOKIE['oauth_token_secret'] 
           ); 
    $token_credentials = $connection->getAccessToken(); 
    

pretendo guardando los valores $token_credentials en la base de datos pero devuelve una matriz vacía: Array ([ ] =>)

¿Qué no estoy haciendo bien?

+2

favor próxima vez que tratar de sangrar el código antes de la publicación de ella, que era totalmente ilegible! – m09

+0

¡gracias por la edición! –

+0

En 'twitteroauth.php' agregue un' var_dump ($ response); 'al final de la función' http'. Esta será la respuesta en bruto devuelta por Twitter. ¿Es un error o un token de acceso? – abraham

Respuesta

3

¿Está eliminando el "oauth_verifier" con el método getAccessToken? En el código de muestra que estás dando, no lo estás haciendo. Echar un vistazo a este diagrama, especialmente en la parte D

OAuth Diagram

he utilizado twitteroauth en el pasado y recuerdo que hacerlo así. (A partir de la segunda fase)

$twitterOauth = new TwitterOAuth($AppId, $twSecret, $_COOKIE['oauth_token'], $_COOKIE['oauth_token_secret']); 
$twToken = $twitterOauth->getAccessToken($_REQUEST['oauth_verifier']); 

$newTwitterOauth = new TwitterOAuth($AppId, $twSecret, $twToken['oauth_token'], $twToken['oauth_token_secret']); 
$response = (array) $newTwitterOauth->get('account/verify_credentials'); 
var_dump($response); 

Hay un par de sugerencias que haría sin embargo:

  • En lugar de stoing esa información en una cookie, le recomiendo encarecidamente que utiliza sesiones para hacer el trabajo.
  • Si insistes en usar cookies, usa la función setcookie.
+0

Sí, aciertas los dos problemas: 1. No estaba configurando la cookie de la manera correcta. 2. No estaba pasando el oauth _verifier para getAccessToken. –

0

¿De dónde sacaste tu clase de TwitterOAuth? ¿Es una clase estándar? ¿O lo has escrito tú mismo? Intentaría depurar la clase y poner más salida detallada en las funciones de la clase.

+0

estoy usando esto: https://github.com/abraham/twitteroauth ... por favor amablemente sugiera cualquier solución. gracias –

+0

Intente enviar una pregunta sobre github para ese proyecto. Puede obtener mejores respuestas allí, ya que es una clase personalizada. –

+0

¿hay alguna otra clase disponible que se pueda usar? ¡Realmente necesito hacerlo funcionar! arghh !!! –

0

¿por qué está utilizando cookies? el uso de cookies es un riesgo potencial porque se almacenan en el lado del cliente, utilice sesión en lugar

Otra pregunta: en teh $redirect_url si u hacer un print_r del $_COOKIE['oauth_token'] y el otro, r vacío?

Im pregunto porque si u desactivar las cookies por parte de algún complemento (como desarrollador web en Firefox) o en la configuración de los navegadores. Tal vez esté usando valores vacíos en $_COOKIE['oauth_token'], y $_COOKIE['oauth_token_secret'].

+0

Tengo problemas para configurar SESSIONS en el sitio, por lo tanto, temporalmente para probar estoy usando COOKIES que en realidad contiene los valores correctos. –

Cuestiones relacionadas