通过API在Twitter上发送欢迎消息

时间:2018-01-16 18:33:10

标签: php curl twitter

Twitter推出了一个新的端点direct_messages/events/new,用于向用户发送欢迎消息,这将以direct_messages/new替换June 19, 2018端点。

我开发了一个应用http://tweeasy.com,它使用direct_messages/new端点将直接消息发送给应用经过身份验证的用户的新关注者。 由于这种变化,我希望o在我的应用程序中实现新的端点,但我没有在任何可用的PHP库中找到此方法。我目前正在使用codebird库。

无论如何都要在Codebird或任何其他库中实现这个新方法。

如果我可以使用Curl实现它,它也会起作用。

我尝试了这段代码,但是它给出了以下错误

{"errors":[{"code":215,"message":"Bad Authentication data."}]}

这是我的代码

$apiUrl="https://api.twitter.com/1.1/direct_messages/events/new.json";

$methodType="POST";

//Auth Parameters

$consumerKey=$appToken['consumer_key']; //app_key
$consumerSecret=$appToken['consumer_secret']; // app_secret
$noucne= substr(md5(microtime(true)),0,8);
$signature="";
$signatureMethod="HMAC-SHA1";
$timestamp=time();
$userOauth=$userToken[0]['oauth_token'];
$userSecret=$userToken[0]['oauth_token_secret'];

//API PARAMS / Header
$params=array(
"oauth_consumer_key"=>$consumerKey,
"oauth_nonce"=>$noucne,
"oauth_signature_method"=>$signatureMethod,
"oauth_timestamp"=>$timestamp,
"oauth_version"=>1.0,
    "oauth_token"=>$userOauth
    );


// BUILD SIGNATURE

我发现oauth_signature的事情很难知道它是否正确。 我使用stackoverflow中的代码生成签名。

// BUILD URL
// Resort
uksort($params, 'strcmp');
// convert params to string
foreach ($params as $k => $v) {$urlPairs[] = $k."=".$v;}
$concatenatedUrlParams = implode('&', $urlPairs);
// form url
$url = $apiBaseUrl.$url."?".$concatenatedUrlParams;

//initialize curl
$curlObj = curl_init();

curl_setopt($curlObj, CURLOPT_URL, $url);
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
//curl_setopt($curlObj, CURLOPT_HTTPHEADER, $header);
curl_setopt($curlObj, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curlObj, CURLOPT_TIMEOUT, 30);


$response = curl_exec($curlObj);

// Change the response json string to object
//$jsonResult = json_decode($response);


$httpStatus=curl_getinfo($curlObj,CURLINFO_HTTP_CODE);

echo $httpStatus;

curl_close($curlObj);

0 个答案:

没有答案