我假设您将数据与一些用户名或用户 ID 一起存储,这些用户名或用户 ID 可以识别您网站的用户并将他们链接到他们正确的 Twitter ID。为了获取用户的基本信息,授权后,您必须使用https://api.twitter.com/1.1/account/verify_credentials.json
带有GET
. 可以在此处找到 1.1 API 的文档。
这将返回一个数组。您可以在or下找到用户名 uder"screen_name"
和用户 ID 。"id"
"id_string"
该问题可能与Get current user's info from Twitter API重复,但我添加了一个答案,因为该讨论指向已弃用的 API。尽管如此,您在那里找到的代码仍然有用(它似乎使用了 Abraham William 的库,但步骤基本相同)。用 Matt Harris 库中的类和函数替换这些类和函数。我不知道codebird,对不起!
编辑:我还提供了一个代码示例(经过测试和工作,虽然我有 tmhOAuth 的问题,所以我偶尔只为自己使用它。我注意到,当我尝试发布时,它有时会返回一些奇怪的错误代码,我不知道为什么):
// Authentication page, with button. You have already connected to your database
$mywebsiteuser = $_SESSION['website_user_id'];
$query= "SELECT * FROM `table_where_you_store_twitter` WHERE website_user_id ='$mywebsiteuser'";
$sql= $mysqli->query($query) or die($mysqli->error.__LINE__); // or whatever else to check is the query fails.
if ($sql->num_rows != 0){
//etc. retrieve data and set the sessions.
// already got some credentials stored?
if ( isset($_SESSION['access_token']) ) {
$tmhOAuth->config['user_token'] = $_SESSION['access_token']['oauth_token'];
$tmhOAuth->config['user_secret'] = $_SESSION['access_token']['oauth_token_secret'];
$code = $tmhOAuth->request('GET', $tmhOAuth->url('1/account/verify_credentials'));
if ($code == 200) {
$resp = json_decode($tmhOAuth->response['response']);
echo $resp->screen_name;
echo $resp->id;
//Etc. Instead of printing them you it's a good idea to store them in the db.
} else {
outputError($tmhOAuth);
}
// we're being called back by Twitter
} elseif (isset($_REQUEST['oauth_verifier'])) {
$tmhOAuth->config['user_token'] = $_SESSION['oauth']['oauth_token'];
$tmhOAuth->config['user_secret'] = $_SESSION['oauth']['oauth_token_secret'];
$code = $tmhOAuth->request('POST', $tmhOAuth->url('oauth/access_token', ''), array(
'oauth_verifier' => $_REQUEST['oauth_verifier']
));
if ($code == 200) {
//etc.
无论如何,总而言之,为了获取用户的信息,您需要他们首先授权您的应用程序。我检查我的用户是否在我的网站上使用用户会话变量,而不是通过 Twitter。如果我没有存储任何内容,我会要求他们授权该应用程序。我希望这有帮助。