2016-01-02 144 views
0

我努力從您的twilio api發送消息,我測試了我的本地服務器上的twilio網站上存在的以下功能的演示: host:(i686 -pc-linux-gnu) libcurl php版本:7.35.0 ssl版本:OpenSSL/1.0.1f。Twilio cURL導致身份驗證錯誤 - 沒有提供憑據

它的工作原理我的本地服務器,但該服務器具有以下特點上: 主持人:x86_64的-紅帽Linux的GNU的 libcurl的PHP版本:7.19.7 SSL版本:NSS/3.19.1基本ECC 它沒沒有工作。 這裏的捲曲請求twilio API輸出:

{「代碼」:20003,「細節」:「你AccountSid或的authToken是不正確的。」,「消息」:「身份驗證錯誤 - 沒有提供憑據」 「MORE_INFO」: 「https://www.twilio.com/docs/errors/20003」, 「狀態」:401} 1

代碼:

<?php 
//my trial account sid, and token 
$sid = "XXXXXXXXXXXX"; // Your Account SID from www.twilio.com/user/account 
$token = "XXXXXXXXXXXXX"; // Your Auth Token from www.twilio.com/user/account 

function send_sms($sid, $token, $to, $from, $body) { 
    // resource url & authentication 
    $uri = 'https://api.twilio.com/2010-04-01/Accounts/' . $sid . '/SMS/Messages.json'; 
    $auth = $sid . ':' . $token; 

    // post string (phone number format= +15554443333), case matters 
    $fields = 
     '&To=' . urlencode($to) . 
     '&From=' . urlencode($from) . 
     '&Body=' . urlencode($body); 

    // start cURL 
    $res = curl_init($uri); 

    // set cURL options 
    curl_setopt($res, CURLOPT_POST, TRUE); 
    curl_setopt($res, CURLOPT_RETURNTRANSFER, TRUE); // don't echo 
    curl_setopt($res, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($res, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($res, CURLOPT_USERPWD, $auth); // authenticate 
    curl_setopt($res, CURLOPT_POSTFIELDS, $fields); 


    // send cURL 
    $result = curl_exec($res); 
    curl_close($res); 
    return $result; 
} 
echo send_sms($sid,$token,"+XXXXXXXX","+XXXXXXXXXXXXXX","TESTING"); 
?> 

我希望你知道是什麼問題,但我認爲這是關係到SSL版本,即包括與服務器上的PHP curl擴展。

PS:我無法訪問第二臺服務器,因此我無法將libcurl擴展升級到最新版本,我認爲這是問題的原因。

+0

我覺得你不想在'&To ='中設置'&',只是'To =' –

回答

1

&將POST-DATA中的字段分開,因此您不需要最初的字段。 變化:

$fields = 
    '&To=' . urlencode($to) . 

到:

$fields = 
    'To=' . urlencode($to) . 

[編輯] 一個額外的區別我你在我做什麼做什麼之間看,是我,包括SID和權威性直接在網址:

$uri = "https://" . $sid . ":" + $auth . "@api.twilio.com/2010..."; 

,而不是使用:

curl_setopt($res, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($res, CURLOPT_USERPWD, $auth); 

但我不知道這是否重要。

+0

如果這回答你的問題,請將它標記爲已回答。謝謝! –

+0

不,不是這樣的,這段代碼的作品,但沒有在我的服務器上我認爲編碼的問題,因爲它無法通過twilio api進行身份驗證。 –