在PHP中使用cURL的TwitterOAuth和SSL

在PHP中使用cURL的TwitterOAuth和SSL,php,ssl,curl,twitter,Php,Ssl,Curl,Twitter,我对这个有点不熟悉。但我正试图使用cURL执行一个GET请求,以收回用户的tweet 我已经能够进行身份验证了。但我不知道如何获取数据。我在本地主机上工作 我尝试添加一个基本证书,但它不起作用 我必须为我的站点购买SSL证书吗?我在其他没有购买SSL证书的网站上看到过twitter订阅源,所以我不知道他们是如何做到的 我在Twitter文档中看到了这一点。提到的文件是我可以购买的吗 curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, True); c

我对这个有点不熟悉。但我正试图使用cURL执行一个GET请求,以收回用户的tweet

我已经能够进行身份验证了。但我不知道如何获取数据。我在本地主机上工作

我尝试添加一个基本证书,但它不起作用

我必须为我的站点购买SSL证书吗?我在其他没有购买SSL证书的网站上看到过twitter订阅源,所以我不知道他们是如何做到的

我在Twitter文档中看到了这一点。提到的文件是我可以购买的吗

curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, True);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($connection, CURLOPT_CAINFO, "path:/ca-bundle.crt");
这是我的cURL代码,在我放入CURLOPT_URL部分并从服务器获得肯定响应之前,它已经工作了:

$url = "https://api.twitter.com/oauth2/token";
    $headers = array( 
        "POST /oauth2/token HTTP/1.1", 
        "Host: api.twitter.com", 
        "User-Agent: my Twitter App v.1",
        "Authorization: Basic ".$encoded."",
        "Content-Type: application/x-www-form-urlencoded;charset=UTF-8"
    ); 
$ch = curl_init();
curl_setopt ($ch, CURLOPT_CAINFO, "cacert.pem");
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/".$username.".json?count=".$num_tweets); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$header = curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($ch); 
curl_close($ch);
编辑:上面的代码有问题,我知道我做错了什么,但不确定是什么。无论如何,这是我的原始代码,它工作正常,并从服务器返回了预期的结果。因此,下一步是从用户的时间线中请求用户的tweet

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$header = curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

您可以使用curl_getinfo了解发生了什么

您也可以发布Twitter文档的url,以便我们可以查看


$headers表示主机为api.twitter.com,但CURLOPT_URL使用twitter.com,这是一个打字错误吗?

您的代码有精神分裂症:

curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/".$username.".json?count=".$num_tweets); 
您将URL设置两次,设置为不同的URL。只有最后一个url集才会有任何效果,因此您不是在API上发布,而是在twitter主站点上发布其他内容


不,您不需要在自己的计算机上使用SSL证书来执行任何操作。ca-cert.pem是证书颁发者的公共证书列表,用于验证/验证Twitter自己的证书。它基本上与浏览器中内置的东西相同,允许浏览器验证任何其他SSL证书。e、 g.在amazon.com上购物不必购买个人SSL证书,只需浏览器中的CA证书即可验证amazon的服务器。

请查看。cURL和Twitter之间需要SSL连接,而不是服务器和访问者之间的SSL连接。PEM在这里:这将是我的错,因为我让第一个工作,然后试图添加第二位。那么,我如何进行身份验证并发送此请求并获得响应呢?我已经用我的原始代码更新了帖子,这些代码确实有效。但我不知道下一步该怎么办。如何从用户的时间线请求推文?