Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

394
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!