我在我的网站上使用此插件显示推文,但即使是插件网站也有问题:
http://coda.co.za/content/projects/jquery.twitter/
代码:
<div class="columns">
<pre class="code">
jQuery(function($){
$("#twitter").tweet({
join_text: "auto",
username: "Jquery",
avatar_size: 48,
count: 4,
auto_join_text_default: "",
auto_join_text_ed: "",
auto_join_text_ing: "",
auto_join_text_reply: "",
auto_join_text_url: "",
loading_text: "loading tweets..."
});
});
</pre>
<div id="twitter"></div>
每个第三方插件(我认为)都不再有用了。我也见过:
那么,替代会是什么?
如果您访问过上面的链接,您可能已经了解,问题出在哪里。
答案 0 :(得分:7)
由于Twitter已从未经过身份验证的1.0
API更改为OAuth 1.1
,因此如果您要使用该插件,则必须通过PHP代理API请求。
这是代理请求的PHP。在您的网站中以twitter-proxy.php
创建此页面,并更新 oauth_access_token , oauth_access_token_secret , consumer_key , consumer_secret <的值/ strong>和 screen_name 反映您自己的Twitter帐户。
如果您需要创建应用程序以获取这些值,请访问https://dev.twitter.com/apps。
<?php
/* Twitter Proxy for updated OAuth */
$config = array(
//Twitter OAuth config
'oauth_access_token' => 'get from twitter',
'oauth_access_token_secret' => 'get from twitter',
'consumer_key' => 'get from twitter',
'consumer_secret' => 'get from twitter',
'base_url' => 'https://api.twitter.com/1.1/',
//Request specific user
'screen_name' => 'your_twitter_screenname',
'count' => 3
);
$twitter_request = 'statuses/user_timeline.json?screen_name='.$config['screen_name'].'&count='.$config['count'];
// Parse $twitter_request into URL parameters
$url_part = parse_url($twitter_request);
/* url_arguments=
* Array
* (
* [screen_name] => lcherone
* [count] => 3
* )
*/
parse_str($url_part['query'], $url_arguments);
$base_url = $config['base_url'].$url_part['path'];
$full_url = $config['base_url'].$twitter_request;
// Set up the OAuth authorization array
$oauth = array(
'oauth_consumer_key' => $config['consumer_key'],
'oauth_nonce' => time(),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_token' => $config['oauth_access_token'],
'oauth_timestamp' => time(),
'oauth_version' => '1.0'
);
// Build vectors for request
$composite_request = _BaseString($base_url, 'GET', array_merge($oauth, $url_arguments));
$composite_key = rawurlencode($config['consumer_secret']).'&'.rawurlencode($config['oauth_access_token_secret']);
$oauth_signature = base64_encode(hash_hmac('sha1', $composite_request, $composite_key, true));
$oauth['oauth_signature'] = $oauth_signature;
// Make cURL Request
$options = array(
CURLOPT_HTTPHEADER => array(_AuthorizationHeader($oauth),'Expect:'),
CURLOPT_HEADER => false,
CURLOPT_URL => $full_url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false
);
$feed = curl_init();
curl_setopt_array($feed, $options);
$result = curl_exec($feed);
$info = curl_getinfo($feed);
curl_close($feed);
// Send suitable headers to the end user.
if(isset($info['content_type']) && isset($info['size_download'])){
header('Content-Type: '.$info['content_type']);
header('Content-Length: '.$info['size_download']);
}
exit($result);
function _BaseString($base_url, $method, $values) {
$ret = array();
ksort($values);
foreach($values as $key=>$value)
$ret[] = $key."=".rawurlencode($value);
return $method."&".rawurlencode($base_url).'&'.rawurlencode(implode('&', $ret));
}
function _AuthorizationHeader($oauth) {
$ret = 'Authorization: OAuth ';
$values = array();
foreach($oauth as $key=>$value)
$values[] = $key.'="'.rawurlencode($value).'"';
$ret .= implode(', ', $values);
return $ret;
}
?>
现在使用以下功能替换build_api_url
文件中的现有jquery.tweets.js
功能,确保替换yoursite.com
function build_api_url() {
var proto = ('https:' == document.location.protocol ? 'https:' : 'http:');
var count = (s.fetch === null) ? s.count : s.fetch;
var common_params = '&callback=?';
if (s.list) {
return 'http://yoursite.com/twitter-proxy.php?url='+s.username[0]+"/lists/"+s.list+"/statuses.json?page="+s.page+"&per_page="+count+common_params;
} else if (s.favorites) {
return 'http://yoursite.com/twitter-proxy.php?url=favorites.json?screen_name='+s.username[0]+"&page="+s.page+"&count="+count+common_params;
} else if (s.query === null && s.username.length == 1) {
return 'http://yoursite.com/twitter-proxy.php?url='+encodeURIComponent('statuses/user_timeline.json?screen_name='+s.username[0]+'&count='+count+common_params);
} else {
var query = (s.query || 'from:'+s.username.join(' OR from:'));
return 'http://yoursite.com/twitter-proxy.php?url=/search.json?&q='+encodeURIComponent(query)+'&rpp='+count+'&page='+s.page+common_params;
}
}
更新2014-12-17 :截至2014-02-27,Twitter requires the use of SSL to connect to its API servers。我已更新代码以反映这一点。
答案 1 :(得分:3)
您可以在2013年6月11日退休时使用Twitter 1.0
API。
如果您尝试申请1.0
API,可以查看问题的原因,如下所示:
https://api.twitter.com/1/statuses/user_timeline.json?screen_name=omgmog
{
"errors": [
{
"message": "The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.",
"code": 68
}
]
}
现在将推文发送到您网站的唯一方法是:
1.1
API获取推文,然后修改jquery.tweet.js
插件以使用它。您可以在此处详细了解1.1
API:https://dev.twitter.com/docs/api/1.1/overview
真的很烦人,我现在有很多需要迁移的网站
答案 2 :(得分:2)
基本上,从Twitter返回的消息如下:
{"errors": [{"message": "The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.", "code": 68}]}
你需要使用为v1.1编写的插件,在新版本中他们添加了安全层,因此你需要获得授权才能通过API获取推文,这里有一些对你有帮助的链接< / p>
http://www.webdevdoor.com/php/authenticating-twitter-feed-timeline-oauth/ http://www.fullondesign.co.uk/coding/2516-how-use-twitter-oauth-1-1-javascriptjquery.htm
答案 3 :(得分:2)
请参阅:https://dev.twitter.com/discussions/10193和https://github.com/StanScates/Tweet.js-Mod获取twitter api 1.1兼容性问题的解决方案
答案 4 :(得分:0)
您可以使用此版本的jQuery.tweet.js代替。 https://github.com/StanScates/Tweet.js-Mod 来自https://github.com/seaofclouds/tweet/issues/264
的更多信息答案 5 :(得分:0)
如果您不想使用PHP,而只想使用Javascript,则可以使用www.tweetjs.com上的Javascript库“ TweetJS”
您可以使用此库检索和显示推文,但不能发布推文,因为这需要验证。这是一个有关如何显示时间轴上的推文(到控制台)的示例:
TweetJs.ListTweetsOnUserTimeline("PetrucciMusic",
function (data) {
console.log(data);
});