Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

395
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda