由于2013年6月11日Twitter API 1.0的退役,下面的脚本不再有效。
// Create curl resource
$ch = curl_init();
// Set url
curl_setopt($ch, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/myscreenname.json?count=10");
// Return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// Close curl resource to free up system resources
curl_close($ch);
if ($output)
{
$tweets = json_decode($output,true);
foreach ($tweets as $tweet)
{
print_r($tweet);
}
}
如何以最少的代码获取用户时间线(最近状态)?
我发现:https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline但我得到了以下错误:
"{"errors":[{"message":"Could not authenticate you","code":32}]}"
有很多类,但在尝试了几个之后,由于Twitter上的这些更新,它们似乎都不起作用,另外一些是非常高级的类,具有很多我并不真正需要的功能。
使用PHP获取最近用户状态的最简单/最短方法是什么?
Rivers粘贴的代码很棒。谢谢!我是新来的,不能发表评论,我只想回答javiervd的问题(你会如何设置屏幕名称和使用这种方法计数?),因为我已经浪费了很多时间去弄清楚。
您需要将参数添加到URL和签名创建过程中。创建签名是帮助我的文章。这是我的密码:
$oauth = array(
'screen_name' => 'DwightHoward',
'count' => 2,
'oauth_consumer_key' => $consumer_key,
'oauth_nonce' => time(),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_token' => $oauth_access_token,
'oauth_timestamp' => time(),
'oauth_version' => '1.0'
);
$options = array(
CURLOPT_HTTPHEADER => $header,
//CURLOPT_POSTFIELDS => $postfields,
CURLOPT_HEADER => false,
CURLOPT_URL => $url . '?screen_name=DwightHoward&count=2',
CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false
);
转到dev.twitter。com并创建一个应用程序。这将为您提供所需的凭据。这是我最近用PHP和cURL编写的一个实现。
<?php
function buildBaseString($baseURI, $method, $params) {
$r = array();
ksort($params);
foreach($params as $key=>$value){
$r[] = "$key=" . rawurlencode($value);
}
return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
}
function buildAuthorizationHeader($oauth) {
$r = 'Authorization: OAuth ';
$values = array();
foreach($oauth as $key=>$value)
$values[] = "$key=\"" . rawurlencode($value) . "\"";
$r .= implode(', ', $values);
return $r;
}
$url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
$oauth_access_token = "YOURVALUE";
$oauth_access_token_secret = "YOURVALUE";
$consumer_key = "YOURVALUE";
$consumer_secret = "YOURVALUE";
$oauth = array( 'oauth_consumer_key' => $consumer_key,
'oauth_nonce' => time(),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_token' => $oauth_access_token,
'oauth_timestamp' => time(),
'oauth_version' => '1.0');
$base_info = buildBaseString($url, 'GET', $oauth);
$composite_key = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
$oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
$oauth['oauth_signature'] = $oauth_signature;
// Make requests
$header = array(buildAuthorizationHeader($oauth), 'Expect:');
$options = array( CURLOPT_HTTPHEADER => $header,
//CURLOPT_POSTFIELDS => $postfields,
CURLOPT_HEADER => false,
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false);
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);
$twitter_data = json_decode($json);
//print it out
print_r ($twitter_data);
?>
这可以从命令行运行:
$ php <name of PHP script>.php
重要提示:截至2018年年中,获取twitter API代币的过程变得更加官僚。我花了一个多工作周的时间才拿到一套API代币,这是一个为大家准备的开源项目,在Packagist上安装了120多万个,在Github上安装了160万个stars,理论上这应该是更高的优先级。
如果你的工作任务是使用twitter API,你必须考虑到这个潜在的极长的等待时间。还可以考虑其他社交媒体渠道,如脸谱网或Instagram,并提供这些选项,因为检索令牌的过程是即时的。
注意:这些文件位于GitHub上。
版本1.0将很快被弃用,不允许未经授权的请求。所以,这里有一个帖子可以帮助你做到这一点,还有一个PHP类可以让你的生活更轻松。
1.创建开发人员帐户:在Twitter上设置自己的开发人员帐户
您需要访问官方Twitter开发者网站并注册开发者帐户。这是对v1进行请求的免费且必要的步骤。1 API。
2.创建应用程序:在Twitter开发者站点上创建应用程序
什么你以为你可以提出未经验证的请求?Twitter的v1版就不是这样了。1 API。你需要访问http://dev.twitter.com/apps然后单击“创建应用程序”按钮。
在这一页上,填写你想要的任何细节。对我来说,这无关紧要,因为我只是想发出大量的阻止请求来清除垃圾邮件追随者。关键是您将获得一组用于应用程序的唯一密钥。
因此,创建一个应用程序的要点是为自己(和Twitter)提供一组密钥。这些是:
这里有一点关于这些代币的信息。
3.创建访问令牌:您需要这些令牌才能成功请求
OAuth请求一些令牌。因此,您需要为您生成它们。
单击底部的“创建我的访问令牌”。然后,一旦你再次滚动到底部,你会有一些新生成的关键点。您需要从这个页面抓取四个先前标记的键来进行API调用,所以在某个地方记下它们。
4.更改访问级别:您不想要只读,是吗?
如果您想充分利用这个API,您需要将设置更改为
选择页面顶部附近的“设置”选项卡。
给你的应用程序读/写权限,点击底部的“更新”。
您可以在此处阅读更多关于Twitter使用的应用程序权限模型的信息。
5.编写访问API的代码:我已经为您完成了大部分工作
我将上面的代码与一些修改和更改合并到一个PHP类中,这样就很容易发出所需的请求。
这使用了OAuth和Twitter v1。1 API和我创建的类,您可以在下面找到。
require_once('TwitterAPIExchange.php');
/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
'consumer_key' => "YOUR_CONSUMER_KEY",
'consumer_secret' => "YOUR_CONSUMER_SECRET"
);
请确保您将从上面的应用程序中获得的密钥放在各自的空间中。
接下来,您需要选择要向其发出请求的URL。Twitter有他们的API文档来帮助您选择URL和请求类型(POST或GET)。
/** URL for REST request, see: https://dev.twitter.com/docs/api/1.1/ **/
$url = 'https://api.twitter.com/1.1/blocks/create.json';
$requestMethod = 'POST';
在文档中,每个URL都说明了可以传递给它的内容。如果我们像上面那样使用“blocks”URL,我可以传递以下POST参数:
/** POST fields required by the URL above. See relevant docs as above **/
$postfields = array(
'screen_name' => 'usernameToBlock',
'skip_status' => '1'
);
现在您已经设置了要对API做什么,现在是发出实际请求的时候了。
/** Perform the request and echo the response **/
$twitter = new TwitterAPIExchange($settings);
echo $twitter->buildOauth($url, $requestMethod)
->setPostfields($postfields)
->performRequest();
对于POST请求,就是这样!
对于GET请求,有点不同。下面是一个例子:
/** Note: Set the GET field BEFORE calling buildOauth(); **/
$url = 'https://api.twitter.com/1.1/followers/ids.json';
$getfield = '?username=J7mbo';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
最后一个代码示例:获取我的追随者列表的简单GET请求。
$url = 'https://api.twitter.com/1.1/followers/list.json';
$getfield = '?username=J7mbo&skip_status=1';
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
echo $twitter->setGetfield($getfield)
->buildOauth($url, $requestMethod)
->performRequest();
我已经把这些文件放在GitHub上,并将其归功于@lackovic10和@rivers!我希望有人觉得它有用;我知道我做到了(我在循环中使用它进行批量阻塞)。
另外,对于那些在Windows上有SSL证书问题的人,请看这篇文章。这个库在引擎盖下使用cURL,所以您需要确保您已经设置了cURL证书。谷歌也是你的朋友。
本文向大家介绍PHP Smarty模版简单使用方法,包括了PHP Smarty模版简单使用方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP Smarty模版简单使用方法。分享给大家供大家参考,具体如下: Index.php: index.tpl: 后记:如何让VS支持tpl扩展名的HTML编辑 在菜单[工具>选项]中设置,如下图: 更多关于PHP相关内容感兴趣的读者可查看本站专题
问题内容: 在普通的PHP安装中进行双向加密的最简单方法是什么? 我需要能够使用字符串密钥加密数据,并在另一端使用相同的密钥进行解密。 安全性不像代码的可移植性那么重要,因此我希望能够使事情尽可能简单。当前,我正在使用RC4实现,但是如果可以找到本机支持的内容,那么我可以节省很多不必要的代码。 问题答案: 编辑: 您确实应该使用openssl_encrypt()和openssl_decrypt()
问题内容: 有没有一种方法可以使会话中断以了解用户是否在线? 即:使用登录名,设置一个$ _SESSION变量,用户超时cookie垃圾收集器更新数据库以将其状态更新为脱机。 我想要一个不涉及时间或日期的解决方案。我希望某些东西可以参加会议或类似的活动。猜测某人是否在线并不能满足我的需求。 问题答案: 不要理会时区之间的差异。没必要 每当用户访问页面时,最后一次更新其在用户表的记录中的字段。然后查
本文向大家介绍利用PHP实现一个简单的用户登记表示例,包括了利用PHP实现一个简单的用户登记表示例的使用技巧和注意事项,需要的朋友参考一下 一、展示单行的用户信息表 首先我们需要创建两个文件,一个为html文件,一个为php文件。 这里博主就创建了form.html和formHandle.php两个文件。 下面展示一下两个文件的内容: form.html的文件内容: 效果展示: 这里要注意的是:类
本文向大家介绍PHP简单计算两个时间差的方法示例,包括了PHP简单计算两个时间差的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP简单计算两个时间差的方法。分享给大家供大家参考,具体如下: 运行结果: PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用: 在线日期/天数计算器: http://tools.jb51.net/jisuanqi/date_jisuanqi
问题内容: 我经常需要显示基于用户 实际 本地时间或受其影响的信息,该时间在各个时区不同。是否有获取用户当前时间和/或时区的可靠方法? 关键的问题: 服务器端代码基于网站主机或用户的ISP 客户端代码基于用户的系统时钟,太容易操作 关键问题: 是否需要查明用户的地理位置? ISP时间可以成为准确的指南吗? 用户的操作系统时钟可以改变还是可以被用户修改? 例子: 倒数: 只需1小时3分56秒! 问题