Twitter API和获取用户信息PHP

时间:2018-05-11 23:19:16

标签: php api twitter oauth

我在使用Twitter API时遇到问题并且总体上了解OAuth。我能够轻松地提出从我的帐户中提取信息的请求。我遇到的问题是与其他用户一起使用"使用Twitter登录"。即使我在登录后能够获得其他用户信息,我也无法在其他.php页面上提供他们的信息(我不是要从MySQL提取信息)。我只能在登录并且页面加载后才能在原始.php页面上获取一次信息。

我会发布一些代码,但我的主要问题/问题是 - 是否可以保存用户访问令牌信息(并重新使用),或者我是否需要让用户登录每次和身份验证只是为了从他们的帐户中提取信息?我无法理解这一点。我可以保存哪些信息以便将来代表用户提出请求而不必每次都登录?

代码示例:

require "autoload.php";

use Abraham\TwitterOAuth\TwitterOAuth;

define('CONSUMER_KEY', 'my consumer key');
define('CONSUMER_SECRET', 'secret');
define('OAUTH_CALLBACK', 'API/Twitter/Twitter.php');

$access_token = 'beep boop boop beep';
$access_token_secret = 'super secret';

session_start();


if (isset($_SESSION['oauth_token'])) {
    $oauth_token = $_SESSION['oauth_token'];
    echo "<div style='background-color:white; width:100%;'>";
    echo $oauth_token; echo "</div>";
    unset($_SESSION['oauth_token']);
    $connection = new Abraham\TwitterOAuth\TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

    $params = array("oauth_verifier" => $_GET['oauth_verifier'], 'oauth_token' => $_GET['oauth_token']);
    $access_token = $connection->oauth('oauth/access_token', $params);

    $connection = new Abraham\TwitterOAuth\TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
    $content = $connection->get('account/verify_credentials');
    //Printing the profile data
    //print_r($content);
    $TimeLine = $connection->get("statuses/user_timeline", ["screen_name"=>$content->screen_name, "count"=>10]);
    echo "<br><br><br>";
    echo "<div style='width:100%; background-color:red; height:auto;'>";
    print_r($connection);
    echo "</div>";
    //print_r($TimeLine);
} else {

    $connection = new Abraham\TwitterOAuth\TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
    $temporary_credentials = $connection->oauth('oauth/request_token', array("oauth_callback" => $callback));
    $_SESSION['oauth_token'] = $temporary_credentials['oauth_token'];
    $_SESSION['oauth_token_secret'] = $temporary_credentials['oauth_token_secret'];
    $url = $connection->url('oauth/authenticate', array('oauth_token' => $temporary_credentials['oauth_token']));

}

1 个答案:

答案 0 :(得分:0)

为了保持代表用户信息的访问,您需要的是生成的 oAuth Token和oAuth Token Secret 。在我上面列出的特定情况中,步骤应该是

$connection = new Abraham\TwitterOAuth\TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, USER_oAuth_TOKEN, USER_oAuth_TOKEN_SECRET);

$content = $connection->get('account/verify_credentials');

您将需要自己的应用程序CONSUMER_KEY和CONSUMER_SECRET。当有人使用Twitter登录时,你必须保存他们的oAuth Token和oAuth Token Secret 。当您拥有此信息(存储在数据库中)时,您现在可以代表用户拨打电话以供将来请求。

更多我上面列出的具体问题,我没有保存这些信息。我一直在制作新的oAuth Tokens和Secrets。