关于在php中使用Twitter-Oauth API的问题

diE*_*cho 6 php twitter-oauth

最近我读了一个很好的教程如何使用Twitter OAuth验证用户,即使它在更改Twitter ID格式之前编写,但它也适用于新的Twitter ID格式.

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

  • 为什么我们总是调用两个方法getRequestTokengetAccessToken ?是得到access tokenaccess 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页面中实现它?

  • 哪个回调网址很重要,即在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);
Run Code Online (Sandbox Code Playgroud)

返回下面

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.
)
Run Code Online (Sandbox Code Playgroud)

注意:我隐藏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
   ....
   ...
Run Code Online (Sandbox Code Playgroud)

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

Tha*_*hai 4

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

  1. 该页面仅向您提供自己的应用程序的访问令牌和访问令牌秘密。如果您不需要您的应用程序像任何其他用户一样进行身份验证,那么不需要请求请求令牌,也不需要将请求令牌交换为访问令牌,您只需使用您的访问令牌即可

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

    • 您请求请求令牌。它仅用于登录,不能用于访问用户数据。您将获得请求令牌和请求令牌秘密。请求请求令牌时,您可以指定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 客户端运行在两个不同的域上,我可以将用户重定向回正确的位置。