代码之家  ›  专栏  ›  技术社区  ›  different

如何从基本的纯文本密码认证迁移到基于OAuth的系统?

  •  2
  • different  · 技术社区  · 16 年前

    今天发现Twitter将停止其API的基本认证;现在推送到OAuth,但我不知道如何使用它,也不知道它是否是我的正确路径。

    当我点击Publish时,我只想发布一条tweet链接到最近发布的文章。目前,我正在以明文形式发送我的Twitter帐户的登录凭证,我意识到这并不安全,但由于我的网站相当小,至少目前还不是一个问题。

    i_m使用此基本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 回复  |  直到 14 年前
        1
  •  1
  •   Ditto    16 年前

    当我为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
  •  1
  •   Ixmatus    16 年前

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

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

    也请阅读Twitter的文档,我确信他们在某个地方找到了它。

        3
  •  0
  •   Jorge Guberte    16 年前

    This example 很好,还有一些 Twitter's API Wiki .

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

        4
  •  0
  •   shadow_of__soul    16 年前

    仅仅OAuth协议是基于用户访问用户数据的授权,所以您想要的是不可能消除用户授权(重定向到Twitter站点)。

    我不知道怎么做,但是WordPress的自动tweet插件实现了你想要的,如果是你想要这个功能的自定义应用,你可以看看她的代码,看看如何完成。