Javascript 设置Twitter API,获取最后几条推文
一般来说,我对使用Twitter是完全陌生的,从来没有在任何项目中嵌入过“最新推文”。我只是想在网站页脚上嵌入3-4条最新的推文,而没有其他功能。我一直在研究如何做到这一点有相当一段时间了,现在有一些麻烦 我在项目中添加了以下代码片段,效果非常好,但是,我不确定如何更新代码片段,使其使用我的Twitter帐户,而不是它设置的帐户Javascript 设置Twitter API,获取最后几条推文,javascript,jquery,twitter,twitter-oauth,Javascript,Jquery,Twitter,Twitter Oauth,一般来说,我对使用Twitter是完全陌生的,从来没有在任何项目中嵌入过“最新推文”。我只是想在网站页脚上嵌入3-4条最新的推文,而没有其他功能。我一直在研究如何做到这一点有相当一段时间了,现在有一些麻烦 我在项目中添加了以下代码片段,效果非常好,但是,我不确定如何更新代码片段,使其使用我的Twitter帐户,而不是它设置的帐户 <div id="twitter_update_list"> </div> <script type="text/
<div id="twitter_update_list">
</div>
<script type="text/javascript" src="http://api.twitter.com/1/statuses/user_timeline.json?screen_name=stackoverflow&include_rts=true&count=4&callback=twitterCallback2">
</script>
此外,我一直在读到最常用的Twitter API很快就会停止工作,因为Twitter希望人们使用自己的API,而不是第三方API
我不知道如何从这里开始。我将非常感谢在这方面提出任何建议。总而言之,我所要做的就是从我的账户中获取3-4条最新推文
非常感谢 所以您真的不想再在客户端执行此操作了。(刚刚浏览了大量文档,开发人员建议执行所有oAuth服务器端) 您需要做的是: 首先:注册并创建新应用程序 第二个:注意:您的消费者密钥/机密以及访问令牌/机密 Third:下载Twitter OAuth库(在本例中,我使用了PHP库,其他库位于此处:) Fourth:(如果使用PHP)如果您在灯上跑步,请确保启用了cURL这是您需要的命令:
sudo apt-get install php5-curl
Fifth:创建一个新的PHP文件并插入以下内容:感谢Tom Elliot
然后砰的一声,你就完了。我知道这不是一个纯粹的js解决方案,但再次阅读新的Twitter API 1.1文档,他们真的不希望您在客户端执行此操作。希望这有帮助 实际上推特有很多限制,因为像耐克和其他公司的竞争很多。tweet的阅读是有限的,因为如果你正在阅读最新的API,它实际上有点落后
他们还控制了DM延迟,这意味着您不能立即进行DM,即使您这样做,另一方也只能在X时间后接收。如果您通过脚本执行此操作,即使您试图从一个ip上进行大量DM,twitter也会简单地阻止您 如何仅使用核心PHP功能获取用户的最后几条tweet(无需CURL或Twitter oAuth库):
// auth parameters
$api_key = urlencode('REPLACEWITHAPPAPIKEY'); // Consumer Key (API Key)
$api_secret = urlencode('REPLACEWITHAPPAPISECRET'); // Consumer Secret (API Secret)
$auth_url = 'https://api.twitter.com/oauth2/token';
// what we want?
$data_username = 'Independent'; // username
$data_count = 10; // number of tweets
$data_url = 'https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended';
// get api access token
$api_credentials = base64_encode($api_key.':'.$api_secret);
$auth_headers = 'Authorization: Basic '.$api_credentials."\r\n".
'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'."\r\n";
$auth_context = stream_context_create(
array(
'http' => array(
'header' => $auth_headers,
'method' => 'POST',
'content'=> http_build_query(array('grant_type' => 'client_credentials', )),
)
)
);
$auth_response = json_decode(file_get_contents($auth_url, 0, $auth_context), true);
$auth_token = $auth_response['access_token'];
// get tweets
$data_context = stream_context_create( array( 'http' => array( 'header' => 'Authorization: Bearer '.$auth_token."\r\n", ) ) );
$data = json_decode(file_get_contents($data_url.'&count='.$data_count.'&screen_name='.urlencode($data_username), 0, $data_context), true);
// result - do what you want
print('<pre>');
print_r($data);
//身份验证参数
$api_key=urlencode('REPLACEWITHAPPAPIKEY');//使用者密钥(API密钥)
$api_secret=urlencode('REPLACEWITHAPPAPISECRET');//消费者机密(API机密)
$auth\u url='1https://api.twitter.com/oauth2/token';
//我们想要什么?
$data_username='Independent';//用户名
$data\u count=10;//推文数量
$data\u url='1https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended';
//获取api访问令牌
$api_credentials=base64_encode($api_key.:'。$api_secret);
$auth\u headers='Authorization:Basic'。$api\u凭据。“\r\n”。
'内容类型:application/x-www-form-urlencoded;字符集=UTF-8'。“\r\n”;
$auth\u context=stream\u context\u create(
排列(
“http'=>数组(
'header'=>$auth_headers,
'方法'=>'发布',
'content'=>http\u build\u查询(数组('grant\u type'=>'client\u credentials',),
)
)
);
$auth\u response=json\u decode(文件获取内容($auth\u url,0,$auth\u context),true);
$auth_token=$auth_response['access_token'];
//获取推文
$data\u context=stream\u context\u create(数组('http'=>array('header'=>'Authorization:Bearer'.$auth\u token.\r\n',));
$data=json\u decode(文件获取内容($data\u url.&count='.$data\u count.&screen\u name='.urlencode($data\u username),0,$data\u context),true);
//结果-做你想做的
打印(“”);
打印(数据);
要修复此问题,请检查extension=php_openssl.dll或extension=php_openssl.so行是否存在并且在php.ini中未注释感谢您的回复!这比预期得到3条推文要多得多,但我必须做我必须做的;)我会试试看。当你说“在dev.twitter.com上注册”时,你需要作为你想从(我客户的acc)或任何帐户(即我自己的帐户)获取推文的帐户来注册吗?@NickG不,它必须是一个推特帐户。上面第五步中的链接对此进行了解释。我们很想知道开发人员建议在服务器端执行此操作的原因?@Seano,因为令牌和密钥是敏感信息,如果被盗,可能会让未经授权的用户访问Twitter,如果在客户端执行,这些令牌和密钥将在Javascript代码中完全可见。谢谢@Rauli!如果可以,我会投更多的票:)其他人注意:目前,twitter访问令牌不会过期:,谢谢你的回答,在不下载任何库的情况下工作得很好。。。你知道我在哪里可以找到更多关于这种从twitter获取数据的方法的文档吗?Thanks@FernandoUrban有一个Twitter搜索API,它的数据url和参数与我的示例不同,但除此之外,它的工作原理应该是类似的。这仍然非常有效。所有可用的参数都可以在这里找到:如果你需要一个只使用javascript的解决方案,你可以在几天内使用Jason Mayes的Twitter帖子抓取器。我将尝试它来做一份新工作,今天对于那些不能在服务器端工作的人来说,这似乎是一个很好的方法。
// auth parameters
$api_key = urlencode('REPLACEWITHAPPAPIKEY'); // Consumer Key (API Key)
$api_secret = urlencode('REPLACEWITHAPPAPISECRET'); // Consumer Secret (API Secret)
$auth_url = 'https://api.twitter.com/oauth2/token';
// what we want?
$data_username = 'Independent'; // username
$data_count = 10; // number of tweets
$data_url = 'https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended';
// get api access token
$api_credentials = base64_encode($api_key.':'.$api_secret);
$auth_headers = 'Authorization: Basic '.$api_credentials."\r\n".
'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'."\r\n";
$auth_context = stream_context_create(
array(
'http' => array(
'header' => $auth_headers,
'method' => 'POST',
'content'=> http_build_query(array('grant_type' => 'client_credentials', )),
)
)
);
$auth_response = json_decode(file_get_contents($auth_url, 0, $auth_context), true);
$auth_token = $auth_response['access_token'];
// get tweets
$data_context = stream_context_create( array( 'http' => array( 'header' => 'Authorization: Bearer '.$auth_token."\r\n", ) ) );
$data = json_decode(file_get_contents($data_url.'&count='.$data_count.'&screen_name='.urlencode($data_username), 0, $data_context), true);
// result - do what you want
print('<pre>');
print_r($data);