2011-06-16 27 views
17

así que solo necesito recuperar información básica del usuario (/ verify_credentials (twitter),/me (facebook) así que estoy tratando de rodar mi propio código por ahora¿cómo se ve un twitter/verify_credentials?

lo tengo en Facebook en segundo intento ya que todo lo que necesito es una solicitud para graph.facebook.com/me + access_token

pero ahora tratar de hacerlo con twitter ha sido increíblemente doloroso, simplemente no puedo resolverlo por los documentos, así que, por favor, ¿qué hace una solicitud a Twitter API/verify_credentials parecen?

cuáles son los parametros? api gorjeo, yu chupar?

Respuesta

26

Facebook usa oAuth 2.0, que es mucho más fácil de implementar que oAuth 1.0 (que usa Twitter).

Un ejemplo de solicitud de verify_credentials API podría tener este aspecto:

https://api.twitter.com/1/account/verify_credentials.json?oauth_consumer_key=XXX&oauth_nonce=XXX&oauth_signature_method=HMAC-SHA1&oauth_token=XXX&oauth_timestamp=123456789&oauth_version=1.0&oauth_signature=YYY

  • oauth_consumer_key se explica por sí
  • oauth_nonce puede ser más o menos una cadena aleatoria de caracteres
  • oauth_signature_method es siempre HMAC -SHA1
  • oauth_token es su token de acceso
  • oauth_timestamp es el valor timestamp UNIX (en UTC)
  • oauth_version es siempre 1.0
  • oauth_signature es su firma generada (que Twitter verificará mediante la reproducción)

generar el valor del parámetro oauth_signature mediante la construcción una cadena base de firma que consta de las siguientes partes. método

  • HTTP en mayúsculas (en este caso GET)
  • un ampersand &
  • de base codificada en URL URI (todo de https hasta e incluyendo verify_credentials.json)
  • un ampersand &
  • todos los parámetros de solicitud en orden alfabético, codificados en url. (Oauth_signature no deben ser incluidos en esto, sin embargo)

El pseudo código en la sección Signing requests in Twitters documentation describe el proceso de firma con elegancia:

httpMethod + "&" + 
    url_encode( base_uri) + "&" + 
    sorted_query_params.each { | k, v | 
     url_encode (k) + "%3D" + 
     url_encode (v) 
    }.join("%26") 

Y después de firmar la secuencia de bases resultante usando el secreto de los consumidores, y el token secreto de acceso Eso es todo lo que hay :)

Pero antes de emitir cualquier solicitud a la API, por supuesto necesitarás obtener un token de acceso. Una vez que capte el flujo de oAuth 1.0 y el proceso de firma. Estarás en casa. La documentación de Twitter hace un gran trabajo al explicar el proceso, pero es un poco difícil de entender. Vale la pena sin embargo.