6

最近我读了一篇很好的教程How to Authenticate Users With Twitter OAuth,即使它是在更改 Twitter ID 格式之前编写的,但它也适用于新的 Twitter ID 格式。

我有一些问题,请解释是否有人成功完成了..

  • 为什么我们总是调用两个方法getRequestTokengetAccessToken ?是得到access tokenandaccess token secret吗?但两者都已经在下面的页面给出......

    http://dev.twitter.com/apps/ {your_app_id}/my_token。

    请求令牌请求令牌秘密到底需要什么?尽管我注意到每次处理时两个令牌都不同。

  • 如果我们从下面的方法更新我们的状态

    $connection->post( 'statuses/update', array('status' => 'some message got from text area value' );

那么我们如何验证状态是否已成功更新?这意味着如果我想显示警报消息post has been sent successfully,我如何在我们的 PHP 页面中实现它?

  • 哪个回调 URL 很重要,即在 Twitter 上发布或做事后实际导航用户的位置?

    1. Registered OAuth Callback URL它是在开发应用程序时编写的 URL

      http://dev.twitter.com/apps/{id_no}
      或者

    2. 它是在我们的 php 代码 ( config.php) 中定义的 URL,例如

      define('OAUTH_CALLBACK', 'http://www.xyz.com');

    再来一个Q'n

  • 如何处理拒绝应用程序的访问?
    注意:请参考我的问题

@Thai 的更新

我按照你的建议做了以下

$user_info = $connection->get('account/verify_credentials');
$status_info =$connection->get('statuses/show/', array('id' =>32320907720523776) );

echo "<pre>";
print_r($status_info);

echo "</pre> Content : <pre>";
print_r($user_info);

返回下方

stdClass Object
(
    [request] => /1/statuses/show.json?id=3.2320907720524E%2B16&oauth_consumer_key=jashak..&oauth_nonce=bec...&oauth_signature=%2FMj%2B0Z7oyYNKdMn%2B%2FOJ6Ba8ccfo%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1296541384&oauth_token=223961574-cW4...&oauth_version=1.0a
    [error] => No status found with that ID.
)

注意:我隐藏oauth_consumer key,oauth_nonce并且oauth_token出于安全目的;)

Content:
stdClass Object
(
    [follow_request_sent] => 
    [profile_link_color] => 038543
    [profile_image_url] => http://a3.twimg.com/profile_images/1215444646/minialist-photography-9_normal.jpg
    [contributors_enabled] => 
    [favourites_count] => 31
    [profile_sidebar_border_color] => EEEEEE
    [id_str] => 223961574 // this is also id_str
    [status] => stdClass Object
        (
            [retweeted] => 
            [id_str] => 32320907720523776 // this id_str i used
            [in_reply_to_status_id_str] => 
            [geo] => 
            [contributors] => 
            [source] => Black Noise
            [in_reply_to_user_id_str] => 
            [retweet_count] => 0
            [truncated] => 
            [coordinates] => 
            [created_at] => Tue Feb 01 06:14:39 +0000 2011
            [favorited] => 
            [text] => Twitter test: verify that status has been updated
            [place] => 
            [in_reply_to_screen_name] => 
            [in_reply_to_status_id] => 
            [id] => 3.2320907720524E+16
            [in_reply_to_user_id] => 
        )
   [screen_name] => ltweetl
   [profile_use_background_image] => 1
   ....
   ...

我有错误No status found with that ID,你id_str提到了什么?

4

3 回答 3

4

这个答案不是专门针对 Abraham 的 Twitter-OAuth API,而是一般适用于 Twitter 的 OAuth API。

  1. 该页面仅向您提供自己的应用程序的访问令牌和访问令牌秘密。如果您不需要将您的应用程序作为任何其他用户进行身份验证,这很好,因此无需请求请求令牌,也无需将请求令牌交换为访问令牌,您只需使用您的访问令牌

    但是,如果您想以其他用户身份进行身份验证,则必须完成所有必需的步骤,此处简要说明:

    • 您请求请求令牌。它仅用于登录,不能用于访问用户的数据。您将获得请求令牌和请求令牌秘密。在请求请求令牌时,您可以指定一个回调 URL,当 Twitter 成功通过身份验证时,它将向您的用户发送该 URL。
    • 在身份验证完成之前,您需要保留请求令牌和机密。
    • 之后,您将用户重定向到http://api.twitter.com/oauth/authorize?oauth_token=OAuth 令牌。
    • 在用户登录 Twitter 并允许您的应用程序后,Twitter 会将用户发送回回调 URL。
    • 您将请求令牌交换为访问令牌,然后您可以丢弃请求令牌,因为您不再需要它。

    只要您需要,您就可以保留访问令牌。如果您不保留访问令牌,则需要请求请求令牌并再次将其交换为访问令牌,并且您的用户将不得不再次登录。

    因此,基本上,如果您正在创建用户需要使用 Twitter 登录的内容,则需要执行上述所有步骤以使用户登录。如果您只是自己使用 Twitter 的 API,则不需要身份验证步。使用您的访问令牌。

  2. 您可以通过检查返回响应中的键来检查推文的 ID 。id_str

    如果未发布状态,Twitter 将返回一个错误对象。

  3. 您可以在应用程序设置页面中指定默认的OAuth 回调,当您未明确指定回调时将使用该回调。

    这是必需的,因为如果您以某种方式忘记或没有指定回调 URL,Twitter 仍然会知道将您的用户重定向到哪里。

    但是,Twitter 鼓励您明确指定回调 URL。使用回调 URL 有很多好处,例如能够指定任何 URL 作为回调。我曾经从中受益,因为我的 Twitter 客户端在两个不同的域上运行,我可以将用户重定向回正确的位置。

于 2011-01-31T13:31:18.467 回答
0

因为我们只有在使用验证者验证用户后才能获得 AccessToken 和 Access Token Secret 。

验证者在 OAuth 过程中是最重要的。所以我们需要发送一个请求来生成 AccessToken 和 Access Token Secret 。

获得 AccessToken 和 Access Token Secret 后,我​​们可以在用户指定的时间内使用它,同时允许您的 Twitter 应用程序允许访问他的 Info.it 可能是 1 天 1 个月,就像在 LInkedin OAuth 中一样,在那之后 AccessToken 和 Access Token Secret过期…………

于 2011-01-21T06:15:58.227 回答
0

当你这样做时,你会得到什么:

$temp = $connection->post( 'statuses/update', array('status' => 'some message got from textarea value' );
print_r($temp);

我猜想这会将响应(以 json/xml 格式)格式存储在 $temp var 中。(要测试 Twitter 响应,您可以查看http://dev.twitter.com/console

config.php 中定义的回调 url 将确定重定向到哪里。这是因为这个回调参数最近被添加到了 twitter API。之前只能在twitter.com的应用管理部分定义回调url,如果没有定义其他url,这个url就是默认url。

于 2011-01-31T12:39:59.240 回答