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);