2012-03-17 2 views
1

Я получаю странную ошибку и не смог найти ответ .. Этот код работает хорошо:Отправка direct_message с twitteroauth

$receiverScrName='name'; 

$method = 'direct_messages/new'; 
$parameters = array('screen_name' => $receiverScrName, 'text' => 'how are you'); 
$dm = $oauth->post($method, $parameters); 

Этот код ниже не работает. Только изменение - это параметр «$ message».

$receiverScrName='name'; 
$message='Hello man'; 

$method = 'direct_messages/new'; 
$parameters = array('screen_name' => $receiverScrName, 'text' => $message); 
$dm = $oauth->post($method, $parameters); 

Это дает ошибку:

stdClass Object ([error] => Could not authenticate with OAuth. 
       [request] => /1/direct_messages/new.json) 

Я пытался кодировать "сообщение":

$message='Hello man'; 
$message=urlencode($message); 

$method = 'direct_messages/new'; 
$parameters = array('screen_name' => $receiverScrName, 'text' => $message); 
$dm = $oauth->post($method, $parameters); 

Сообщение отправлено. Но полученное сообщение стало «Hello + man».

Как я могу удалить «плюс» или другие экранированные символы из сообщения, которое будет отправлено? Спасибо

+0

Я не могу воспроизвести версию с '$ message', которая не работает. Может быть, у вас была случайная ошибка из Twitter? – abraham

+0

Вскоре я узнал, что это связано с символами, отличными от ASCII, в «$ message». Он работает, когда я транслитерирую эти символы. Но если в тексте сообщения присутствует только символ UTF-8, это не работает. Я также предполагаю, что твиттер транслитерирует символы, отличные от ASCII, когда я отправляю прямые сообщения с помощью twitter.com – trante

ответ

1

Я узнал, что эта проблема связана с символами, отличными от ASCII, в тексте сообщения. Когда я транслитерирую их, он работает.