2009-09-03 31 views
1

我的站點使用php函數在事件發生時發送更新。現在,我使用的是經典的登錄技術,因此對於相關的Twitter帳戶的用戶名和密碼是在短短的硬編碼的功能如下所示:使用OAuth替換單個用戶的經典登錄twitter bot

function sendTweet($msg) 
{ 
    $username = 'username'; 
    $password = 'password'; 
    $url = 'http://twitter.com/statuses/update.xml'; 
    $curl_handle = curl_init(); 

    curl_setopt($curl_handle, CURLOPT_URL, "$url"); 
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); 
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl_handle, CURLOPT_POST, 1); 
    curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$msg"); 
    curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password"); 

    $buffer = curl_exec($curl_handle); 
    curl_close($curl_handle); 
} 

我想重寫它使用OAuth,主要是爲了避免在經典登錄不推薦時出現問題,而且還會在每次推文後使用我的應用程序的名稱而不是「從API」。

我可以找到的所有示例都涉及創建一個認證系統,它將用戶發送到twitter.com以批准認證請求,然後使用適當的令牌將其發送回原始站點。對於我的應用程序,雖然只有一個Twitter帳戶,但它不屬於發起該操作的用戶(他甚至可能不知道或不在意他正在發起推文)。

那麼我該如何做到這一點?我能想到的最佳選擇是構建一次性使用腳本,它將允許我請求訪問令牌,然後將該令牌硬編碼到sendTweet函數中。對於這樣一個簡單的應用程序來說,這看起來有點矯枉過正,並且如果Twitter永遠失效訪問令牌,它將在未來的路上創造一個潛在的問題。文檔表示他們可能永遠不會,但是應用程序應該被設計爲如果他們這樣做,就會優雅地處理它。

有沒有人有這樣的項目經驗?有沒有更簡單更優雅的方式來做到這一點?

回答

0

您應該將OAuth腳本寫入管理面板(假設您已經擁有一個)。如果您的訪問密鑰過期,您可以從管理員重新授權。