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

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

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.