Jump to content

Curl Fetch of Twitter Timeline Feed not working


digioz

Recommended Posts

Hello PHP Freaks!

 

I have the following PHP Curl code which is supposed to fetch the twitter timeline feed for a specific username and parse and display it on a page, but for some reason Curl is unable to fetch data from twitter:

 

<?php
function get_data($url)
{
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

$json = get_data("https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=digioz&count=2");

if ($json != false)
{
    $obj = json_decode($json);
        
    foreach($obj as $var => $value)
    {
        echo "Message number: $var <br/>";    
        echo "Name: " . $obj[$var]->user->name;
        echo "Handle: " . $obj[$var]->user->screen_name . "<br/>";        
        echo "Message: " . $obj[$var]->text;        
        echo "Created" . $obj[$var]->created_at . "<br/>";                    
        echo "URL" . $obj[$var]->user->url . "<br/>";
        echo "Location" . $obj[$var]->user->location . "<br/>";       
        echo "<br/>";
    }
}
else
{
    echo "Could not fetch Twitter Data";
}
?>

 

Anyone have any idea why the data is not being fetched? If I copy and paste the URL into my browser window it returns results just fine, so I know the problem is not with the URL.

 

Thanks,

Pete

Link to comment
Share on other sites

Have you assigned the URL to :

 

$url

 

Yeah, on this line:

 

curl_setopt($ch,CURLOPT_URL,$url);

 

The curl function "get_data" is fetching content from other URL fine, just doesn't work with twitter. :(

 

Pete

Link to comment
Share on other sites

Its a commonly overlooked issue, simply using the following line will fix it:

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

 

Put that inside your function below:

  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);

 

Regards, PaulRyan.

Link to comment
Share on other sites

Are you using https with these other URL's that work?

 

For php to be able to make a https request, you need to have OpenSSL installed.

 

You are absolutely correct, but I don't have OpenSSL installed on my development machine though.

 

 

Its a commonly overlooked issue, simply using the following line will fix it:

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

 

Put that inside your function below:

  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);

 

Regards, PaulRyan.

 

Thank you very much Paul! This worked like a charm. Much appreciated!

 

Pete

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.