2010-10-03 10 views

Répondre

5

Voici comment vous pouvez tweeter sans utiliser cURL avec PHP. Nous avons deux options-

Avec contexte de flux

fonction Php stream_context_create a la magie. Il crée et retourne un contexte de flux avec toutes les options passées.

<?php 
set_time_limit(0); 
$username = 'username'; 
$password= 'WHATEVER'; 
$message='YOUR NEW STATUS'; 
function tweet($message, $username, $password) 
{ 
    $context = stream_context_create(array(
    'http' => array(
     'method' => 'POST', 
     'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)). 
        "Content-type: application/x-www-form-urlencoded\r\n", 
     'content' => http_build_query(array('status' => $message)), 
     'timeout' => 5, 
    ), 
)); 
    $ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context); 
    return false !== $ret; 
} 
echo tweet($message, $username, $password); 
?> 

Avec prise

programmation

PHP a une API de programmation socket très capable. Ces fonctions de socket incluent presque tout ce dont vous avez besoin pour une communication client-serveur basée sur socket via TCP/IP. fsockopen ouvre une connexion de socket de domaine Internet ou Unix.

<?php 



$username = 'username'; 

$password= 'WHATEVER'; 

$message='YOUR NEW STATUS'; 



$out="POST http://twitter.com/statuses/update.json HTTP/1.1\r\n" 

    ."Host: twitter.com\r\n" 

    ."Authorization: Basic ".base64_encode ("$username:$password")."\r\n" 

    ."Content-type: application/x-www-form-urlencoded\r\n" 

    ."Content-length: ".strlen ("status=$message")."\r\n" 

    ."Connection: Close\r\n\r\n" 

    ."status=$msg"; 



$fp = fsockopen ('twitter.com', 80); 

fwrite ($fp, $out); 

fclose ($fp); 

?> 

glanées ici: http://www.motyar.info/2010/02/update-twitter-status-with-php-nocurl.html

espoir SITS aide.

Si vous avez besoin de plus d'aide, faites-le moi savoir que je suis un programmeur php moi-même. grâce

PK

+0

Bonne réponse avec des explications claires et des exemples. Nice, +1. –

0

Vous pouvez le faire en utilisant le oauth pecl extension. Voir here pour plus de détails. EDIT: vous devez installer l'extension pecl

2
<?php 
/* 
* using file_get_contents 
*/ 

$key = ''; 
$secret = ''; 
$api_endpoint = 'https://api.twitter.com/1.1/search/tweets.json?q=news'; // endpoint must support "Application-only authentication" 

// request token 
$basic_credentials = base64_encode($key.':'.$secret); 
$opts = array('http' => 
    array(
     'method' => 'POST', 
     'header' => 'Authorization: Basic '.$basic_credentials."\r\n". 
     "Content-type: application/x-www-form-urlencoded;charset=UTF-8\r\n", 
     'content' => 'grant_type=client_credentials' 
    ) 
); 

$context = stream_context_create($opts); 

// send request 
$pre_token = file_get_contents('https://api.twitter.com/oauth2/token', false, $context); 

$token = json_decode($pre_token, true); 

if (isset($token["token_type"]) && $token["token_type"] == "bearer"){ 
    $opts = array('http' => 
     array(
      'method' => 'GET', 
      'header' => 'Authorization: Bearer '.$token["access_token"]  
     ) 
    ); 

    $context = stream_context_create($opts); 

    $data = file_get_contents($api_endpoint, false, $context); 

    print $data; 
} 
?> 
+0

Comment câbler votre code pour poster un tweet? J'ai changé le point de terminaison à https://api.twitter.com/1.1/statuses/update.json?status=Testing et cela m'amène à obtenir une 400 Bad Request. D'après ce que les docs disent, cela signifie probablement que je ne suis pas authentifié pour poster un tweet. Je crois que vous avez besoin de plus d'informations d'authentification que juste la clé et le secret? –