0

我使用以下教程编写了一个 twitter api 应用程序:

http://www.youtube.com/watch?v=GQaPt-gQVRI

如何修改脚本以生成特定于用户的时间线流,以便应用程序在运行时显示用户的时间线流而不是我的(因为我编写了应用程序,因此它具有我的 Twitter 凭据)

谢谢

php 应用程序使用以下方法验证我的 twitter 凭据:

<?php
require 'tmhOAuth.php'; // Get it from: https://github.com/themattharris/tmhOAuth

// Use the data from http://dev.twitter.com/apps to fill out this info
// notice the slight name difference in the last two items)

$connection = new tmhOAuth(array(
  'consumer_key' => 'my key',
    'consumer_secret' => 'my secret',
    'user_token' => 'my token', //access token 
    'user_secret' => 'my user secret' //access token secret
));

// set up parameters to pass
$parameters = array();

if ($_GET['count']) {
    $parameters['count'] = strip_tags($_GET['count']);
}

if ($_GET['screen_name']) {
    $parameters['screen_name'] = strip_tags($_GET['screen_name']);
}

if ($_GET['twitter_path']) { $twitter_path = $_GET['twitter_path']; }  else {
    $twitter_path = '1.1/statuses/user_timeline.json';
}

$http_code = $connection->request('GET', $connection->url($twitter_path), $parameters );

if ($http_code === 200) { // if everything's good
    $response = strip_tags($connection->response['response']);

    if ($_GET['callback']) { // if we ask for a jsonp callback function
        echo $_GET['callback'],'(', $response,');';
    } else {
        echo $response; 
    }
} else {
    echo "Error ID: ",$http_code, "<br>\n";
    echo "Error: ",$connection->response['error'], "<br>\n";

因此,无需在 api 调用中传递新的用户名,我如何添加一个片段来要求用户登录?如果我添加该片段供用户登录,api会自动用用户的身份验证字符串填充吗?

4

2 回答 2

0

如果您希望让用户登录,那么您最好的选择是使用abraham 的 twitteroauth 库

下载并包含在您的项目中,然后包含库并开始会话。

require("twitteroauth/twitteroauth.php");  
session_start();  

然后创建一个新实例并使用您的应用详细信息进行身份验证。您可以设置一个 url 以在用户进行身份验证时重定向到。您还需要缓存您的令牌。

$twitteroauth = new TwitterOAuth('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET');  
$request_token = $twitteroauth->getRequestToken('http://example.com/loggedin.php');

$_SESSION['oauth_token'] = $request_token['oauth_token'];  
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];  

将用户重定向到 twitter 以进行身份​​验证

header('Location: '.$twitteroauth->getAuthorizeURL($request_token['oauth_token']));

在您设置 twitter 重定向到的文件中,您需要使用创建的令牌重新进行身份验证。Twitter 还将向您的 url 添加一个参数,您可以使用该参数为该用户创建访问令牌。现在,当您向 twitter 发送 GET 请求时,它会代表登录的用户执行此操作。

require("twitteroauth/twitteroauth.php");  
session_start();  

$twitteroauth = new TwitterOAuth('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);  

$user_info = $twitteroauth->get('account/verify_credentials'); 
print_r($user_info);

您可以获得额外的详细信息$user_info,您可以从中缓存或存储在数据库中,这将允许您记住已经过身份验证的用户。您将需要使用oauth_tokenand oauth_secret,类似这样的东西。

$twitteroauth = new TwitterOAuth('YOUR_CONSUMER_KEY', 'YOUR_CONSUMER_SECRET', 'OAUTH_TOKEN', 'OAUTH_SECRET');  
于 2013-09-24T09:54:01.380 回答
0

您可以向以下 url 发送获取请求以获取用户时间线。

 https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=2

您可以将参数 screen_name 替换为您想要访问的用户名,并且您可以将 count 替换为您想要获取的推文数量,count 是可选的并且不必包含在内。

您可以在 office twitter API 网站上阅读有关 statuses/user_timeline 的更多信息:https ://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline

于 2013-09-23T14:26:44.847 回答