如何从基本明文密码身份验证迁移到基于OAuth的系统?

时间:2010-04-25 14:06:54

标签: php oauth twitter

今天发现Twitter将停止其API的基本身份验证;推动现在朝向OAuth,但我不知道如何使用它或者它是否适合我。

我希望能够做的就是在发布时发布链接到最近发布的帖子的推文。目前我正在以明文形式发送我的Twitter帐户的登录凭据,我发现这不是那么安全,但由于我的网站相当小,所以至少现在不是问题。

我正在使用这个基本的PHP代码:

$status = urlencode(stripslashes(urldecode("Test tweet")));
$tweetUrl = 'http://www.twitter.com/statuses/update.xml';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "$tweetUrl");
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, "status=$status");
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");

$result = curl_exec($curl);
$resultArray = curl_getinfo($curl);

if ($resultArray['http_code'] == 200)
{
    curl_close($curl);
    $this->redirect("");
}
else
{
    curl_close($curl);
    echo 'Could not post to Twitter. Please go back and try again.';
}

如何从此移至OAuth系统?我非常感谢任何教程/建议。提前谢谢。

4 个答案:

答案 0 :(得分:1)

首先,您为什么要通过普通http://而非SSL(https://)发送帐户密码?我会马上改变它。

第二:http://oauth.net/documentation/getting-started/

阅读Twitter的文档,我相信他们已经在某处了。

答案 1 :(得分:1)

我发现这个页面/脚本在我为Twitter实施OAuth时很有用:http://www.jaisenmathai.com/blog/2009/04/30/letting-your-users-sign-in-with-twitter-with-oauth/
我确定你可以从我链接到的页面获得这个,但我在本页面上使用的代码是

$twtrObj=new EpiTwitter($consumer_key, $consumer_secret);
$twtrObj->setToken($tok, $sec);
$status="I just submited new artwork! http://gravityprops.com/dragonart/artwork?action=view&id={$id}";
$update=$twtrObj->post_statusesUpdate(array('status' => $status));
$tmp=$update->response;

$ tok和$ sec是我从数据库中提取的任何特定用户的令牌和秘密。 $ consumer_key和$ consumer_secret在一个单独的文件中声明,该文件包含在内(与我链接到的页面上的方式相同)。我把我需要的所有文件放在PHP include文件夹中,这样只有PHP才能访问它。

答案 2 :(得分:0)

This example非常好,Twitter's API Wiki还有更多内容。

编辑:
要升级,您需要让用户点击“使用Twitter登录”按钮,而不是让他们输入他们的数据。它们将被发送到Twitter OAuth页面,如果他们授权您的应用程序,您将能够正常进行。这样您就不必处理任何密码了。

答案 3 :(得分:0)

只是OAuth协议基于用户授权来访问用户数据,因此您想要的是不可能将用户授权白化(重定向到推特网站)。

我不知道如何,但是wordpress的自动推文插件可以满足您的需求,如果您想要这个功能的自定义应用程序,您可以查看她的代码以了解如何完成。