Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

397
Vistas
¿Por qué no funciona mi solicitud de oAuth de Twitter? | Rizo, Encabezados
 $callbackUrl = urlencode(self::CALLBACK_URL); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"https://api.twitter.com/oauth/request_token"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, [ 'oauth_callback' => $callbackUrl, 'oauth_consumer_key' => self::TWITTER_API_KEY ]); $timestamp = date("U"); // UTC UNIX time $oauth_nonce = preg_replace( '/[\W]/', '', base64_encode($timestamp)); $headers = [ "Authorization: OAuth oauth_consumer_key=\"".self::TWITTER_API_KEY."\"", "oauth_nonce: \"$oauth_nonce\"", "oauth_signature: \"oauth_signature\"", "oauth_signature_method: \"HMAC-SHA1\"", "oauth_timestamp: \"$timestamp\"", "oauth_version: \"1.0\"", ]; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_STDERR, $fp); curl_setopt($ch, CURLINFO_HEADER_OUT , true); $curlResult = curl_exec($ch); if (curl_errno($ch)) { echo 'Curl Request Error:' . curl_error($ch); throw new CHttpException(404,'ERROR'); } curl_close ($ch);

El resultado de Twitter: {"errors":[{"code":215,"message":"Bad Authentication data."}]}

Petición:

 [url] => https://api.twitter.com/oauth/request_token [content_type] => application/json; charset=utf-8 [http_code] => 400 [header_size] => 1395 [request_size] => 429 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.250341 [namelookup_time] => 0.028679 [connect_time] => 0.044366 [pretransfer_time] => 0.093077 [size_upload] => 344 [size_download] => 62 [speed_download] => 247 [speed_upload] => 1374 [download_content_length] => 62 [upload_content_length] => 344 [starttransfer_time] => 0.115261 [redirect_time] => 0 [redirect_url] => 0 [primary_ip] => 104.244.42.2 [certinfo] => Array ( ) [primary_port] => 443 [local_ip] => 192.168.208.2 [local_port] => 48502 [request_header] => POST /oauth/request_token HTTP/1.1

Hice todo como la documentación de Twitter, pero devuelve 215. Creo que el problema está en la parte de los encabezados, pero no sé qué es lo que está mal allí.

Generé el nonce con base64 aleatoria. Cosas como Twitter dijo que allí Documentación. La Hora se parece a la Hora de ejemplo de Twitter. Vi que cuando el tiempo está 5 minutos por encima de los twitters, la solicitud se bloquea. ¿Es ese el mismo código de error entonces?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Según la documentación , el encabezado de autorización debe contener todos los datos. Su encabezado Authorization contiene solo OAuth oauth_consumer_key .

Su encabezado real (mal formato, porque, por ejemplo, 'oauth' es una entrada de los encabezados, pero debería ser una propiedad de Autorización; consulte a continuación).

 Authorization: OAuth oauth_consumer_key='xxx' oauth_nonce: 'MTY0MzIwNjg5NQ' oauth_signature: 'oauth_signature' oauth_signature_method: 'HMAC-SHA1' oauth_timestamp: '1643206895' oauth_version: '1.0'

Deberías

 Authorization: OAuth oauth_consumer_key='xxx', oauth_nonce="MTY0MzIwNjg5NQ", oauth_signature="oauth_signature", ...

Debe concatenar todos los datos en una cadena . Pero podría crear una matriz para ayudar a construirlo. Aquí hay un ejemplo :

 $authParams = implode(', ', [ 'oauth_consumer_key="' . self::TWITTER_API_KEY . '"', 'oauth_nonce="' . $oauth_nonce . '"', 'oauth_signature="oauth_signature"', 'oauth_signature_method="HMAC-SHA1"', 'oauth_timestamp="' . $timestamp . '"', 'oauth_version="1.0"', ]); $headers = [ "Authorization: OAuth $authParams" ]; var_dump($headers);

Salidas algo como:

 array(1) { [0]=> string(197) "Authorization: OAuth oauth_consumer_key="xxx", oauth_nonce="MTY0MzIwNjg2MA", oauth_signature="oauth_signature", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1643206860", oauth_version="1.0"" }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda