Tengo desarrollado en una página Web mía una aplicación para que desde un formulario, se mande al usuario que esté interactuando un mensaje a tweeter.
Todo funciona perfectamente (me actualiza el status de Twitter sin problema) pero el problema viene cuando en el texto aparece algún caracter especial
Con poner una simple tilde en una palabra, todo el proceso me lo da perfecto MENOS que no se publica el mensaje.
Revisando las respuestas del objeto Twitter y:
- Cuando mando textos SIN caracteres especiales o SIN tildes, el objeto Twitter está perfecto con todos sus nodos correctos
- Cuando mando textos CON caracteres especiales o CON tildes, el objeto Twitter me muestra un nodo de ERROR
Código:
¿Porqué puede estar ocurriendo esto?array(2) { ["error"]=> string(34) "Could not authenticate with OAuth." ["request"]=> string(21) "/statuses/update.json" }
El proceso de actuación es:
- Página con formulario.
- Envío del formulario a la página donde tengo todo programado
Esta es mi programación:
Código PHP:
header("Content-Type: text/html; charset=utf-8");
include 'php/twitter/lib/EpiCurl.php';
include 'php/twitter/lib/EpiOAuth.php';
include 'php/twitter/lib/EpiTwitter.php';
include 'php/twitter/secret.php';
include 'php/bitly/secret.php';
// Si NO está autentificado en Twitter, le mandamos a la URL de autentificación
if((isset($_GET['oauth_token']) && $_GET['oauth_token'] == '') || (!isset($_GET['oauth_token'])))
{
$url = $twitterObj->getAuthorizationUrl();
header('Location: '.$url);
}
else // Si está autentificado en Twitter
{
$twitterObj->setToken($_GET['oauth_token']);
$token = $twitterObj->getAccessToken();
$twitterObj->setToken($token->oauth_token, $token->oauth_token_secret);
$_SESSION['ot'] = $token->oauth_token;
$_SESSION['ots'] = $token->oauth_token_secret;
$twitterInfo= $twitterObj->get_accountVerify_credentials();
$twitterInfo->response;
$username = $twitterInfo->screen_name;
$profilepic = $twitterInfo->profile_image_url;
}
// si tengo los datos necesarios para mandar el mensaje....
if(isset($_SESSION["TWEET"]["TO"]) && !empty($_SESSION["TWEET"]["TO"]) && isset($_SESSION["TWEET"]["TEXT"]) && !empty($_SESSION["TWEET"]["TEXT"]) && isset($_SESSION["TWEET"]["PLAN"]) && !empty($_SESSION["TWEET"]["PLAN"]) && !empty($username))
{
$twitterObj->setToken($_SESSION['ot'], $_SESSION['ots']);
$update_status = $twitterObj->post_statusesUpdate(array('status' => $msg));
$the_response = $update_status->response;
// Si nos da algun tipo de error lo mostramos
if (isset($the_response["error"]) && !empty($the_response["error"])) {
echo("<pre>");
var_dump($the_response);
echo("</pre>");
} else {
// Redirigimos a la página correspondiente después de que esté todo bien
header("Location: twitter_correcto.php";
}
}
Gracias y un saludo.
Javier