0
我已經按照網上的教程從這裏開始:http://www.webdevdoor.com/javascript-ajax/custom-twitter-feed-integration-jquery/錯誤獲取鳴叫1.1
但我發現了它只是一條錯誤消息「錯誤:」沒有別的。
我所有的PHP腳本調用JSON輸出的首先是如下:
<?php
session_start();
require_once("twitteroauth/twitteroauth.php"); //Path to twitteroauth library
$twitteruser = "abstractweb";
$notweets = 3;
$consumerkey = "S1WEUELXXbm3XMXKOw";
$consumersecret = "p7Z7ftlJoqATxMlRHkmQWjemsr7Cof96oXhz2Vqb4E";
$accesstoken = "192370815-O6LUMwpf3D1S4zZpQXobL6GPxLc4AFFSwg5yknxU";
$accesstokensecret = "n0fDCtsQFxKJss6tpASeOrq9MluMPdGufNbi1Vs";
function getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret) {
$connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret);
return $connection;
}
$connection = getConnectionWithAccessToken($consumerkey, $consumersecret, $accesstoken, $accesstokensecret);
$tweets = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$twitteruser."&count=".$notweets);
echo json_encode($tweets);
?>
而且JQuery的調用是這樣的:
// JavaScript Document
//JQuery Twitter Feed. Coded by Tom Elliott @ www.webdevdoor.com (2013) based on https://twitter.com/javascripts/blogger.js
//Requires JSON output from authenticating script: http://www.webdevdoor.com/php/authenticating-twitter-feed-timeline-oauth/
$(document).ready(function() {
var displaylimit = 3;
var twitterprofile = "abstractweb";
var screenname = "Abstract Web";
var showdirecttweets = false;
var showretweets = true;
var showtweetlinks = true;
var showprofilepic = false;
var showtweetactions = true;
var showretweetindicator = true;
var headerHTML = '';
var loadingHTML = '';
headerHTML += '<a href="https://twitter.com/" target="_blank"><img src="images/twitter-bird-light.png" width="34" style="float:left;padding:3px 12px 0px 6px" alt="twitter bird" /></a>';
headerHTML += '<h1>'+screenname+' <span style="font-size:13px"><a href="https://twitter.com/'+twitterprofile+'" target="_blank">@'+twitterprofile+'</a></span></h1>';
loadingHTML += '<div id="loading-container"><img src="images/ajax-loader.gif" width="32" height="32" alt="tweet loader" /></div>';
$('#twitter-feed').html(headerHTML + loadingHTML);
$.getJSON('http://www.abstract-thinking.co.uk/get-tweets1.php',
function(feeds) {
//alert(feeds);
var feedHTML = '';
var displayCounter = 1;
for (var i=0; i<feeds.length; i++) {
var tweetscreenname = feeds[i].user.name;
var tweetusername = feeds[i].user.screen_name;
var profileimage = feeds[i].user.profile_image_url_https;
var status = feeds[i].text;
var isaretweet = false;
var isdirect = false;
var tweetid = feeds[i].id_str;
//If the tweet has been retweeted, get the profile pic of the tweeter
if(typeof feeds[i].retweeted_status != 'undefined'){
profileimage = feeds[i].retweeted_status.user.profile_image_url_https;
tweetscreenname = feeds[i].retweeted_status.user.name;
tweetusername = feeds[i].retweeted_status.user.screen_name;
tweetid = feeds[i].retweeted_status.id_str;
status = feeds[i].retweeted_status.text;
isaretweet = true;
};
//Check to see if the tweet is a direct message
if (feeds[i].text.substr(0,1) == "@") {
isdirect = true;
}
//console.log(feeds[i]);
//Generate twitter feed HTML based on selected options
if (((showretweets == true) || ((isaretweet == false) && (showretweets == false))) && ((showdirecttweets == true) || ((showdirecttweets == false) && (isdirect == false)))) {
if ((feeds[i].text.length > 1) && (displayCounter <= displaylimit)) {
if (showtweetlinks == true) {
status = addlinks(status);
}
if (displayCounter == 1) {
feedHTML += headerHTML;
}
feedHTML += '<div class="twitter-article">';
feedHTML += '<div class="twitter-pic"><a href="https://twitter.com/'+tweetusername+'" target="_blank"><img src="'+profileimage+'"images/twitter-feed-icon.png" width="42" height="42" alt="twitter icon" /></a></div>';
feedHTML += '<div class="twitter-text"><p><span class="tweetprofilelink"><strong><a href="https://twitter.com/'+tweetusername+'" target="_blank">'+tweetscreenname+'</a></strong> <a href="https://twitter.com/'+tweetusername+'" target="_blank">@'+tweetusername+'</a></span><span class="tweet-time"><a href="https://twitter.com/'+tweetusername+'/status/'+tweetid+'" target="_blank">'+relative_time(feeds[i].created_at)+'</a></span><br/>'+status+'</p>';
if ((isaretweet == true) && (showretweetindicator == true)) {
feedHTML += '<div id="retweet-indicator"></div>';
}
if (showtweetactions == true) {
feedHTML += '<div id="twitter-actions"><div class="intent" id="intent-reply"><a href="https://twitter.com/intent/tweet?in_reply_to='+tweetid+'" title="Reply"></a></div><div class="intent" id="intent-retweet"><a href="https://twitter.com/intent/retweet?tweet_id='+tweetid+'" title="Retweet"></a></div><div class="intent" id="intent-fave"><a href="https://twitter.com/intent/favorite?tweet_id='+tweetid+'" title="Favourite"></a></div></div>';
}
feedHTML += '</div>';
feedHTML += '</div>';
displayCounter++;
}
}
}
$('#twitter-feed').html(feedHTML);
//Add twitter action animation and rollovers
if (showtweetactions == true) {
$('.twitter-article').hover(function(){
$(this).find('#twitter-actions').css({'display':'block', 'opacity':0, 'margin-top':-20});
$(this).find('#twitter-actions').animate({'opacity':1, 'margin-top':0},200);
}, function() {
$(this).find('#twitter-actions').animate({'opacity':0, 'margin-top':-20},120, function(){
$(this).css('display', 'none');
});
});
//Add new window for action clicks
$('#twitter-actions a').click(function(){
var url = $(this).attr('href');
window.open(url, 'tweet action window', 'width=580,height=500');
return false;
});
}
}).error(function(jqXHR, textStatus, errorThrown) {
if (errorThrown == "Not Found") {
errorThrown = "not found: tweets php script";
}
alert(textStatus + " - " + errorThrown);
});
//Function modified from Stack Overflow
function addlinks(data) {
//Add link to all http:// links within tweets
data = data.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
return '<a href="'+url+'" >'+url+'</a>';
});
//Add link to @usernames used within tweets
data = data.replace(/\[email protected]([_a-z0-9]+)/ig, function(reply) {
return '<a href="http://twitter.com/'+reply.substring(1)+'" style="font-weight:lighter;" target="_blank">'+reply.charAt(0)+reply.substring(1)+'</a>';
});
//Add link to #hastags used within tweets
data = data.replace(/\B#([_a-z0-9]+)/ig, function(reply) {
return '<a href="https://twitter.com/search?q='+reply.substring(1)+'" style="font-weight:lighter;" target="_blank">'+reply.charAt(0)+reply.substring(1)+'</a>';
});
return data;
}
function relative_time(time_value) {
var values = time_value.split(" ");
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
var parsed_date = Date.parse(time_value);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date)/1000);
var shortdate = time_value.substr(4,2) + " " + time_value.substr(0,3);
delta = delta + (relative_to.getTimezoneOffset() * 60);
if (delta < 60) {
return '1m';
} else if(delta < 120) {
return '1m';
} else if(delta < (60*60)) {
return (parseInt(delta/60)).toString() + 'm';
} else if(delta < (120*60)) {
return '1h';
} else if(delta < (24*60*60)) {
return (parseInt(delta/3600)).toString() + 'h';
} else if(delta < (48*60*60)) {
//return '1 day';
return shortdate;
} else {
return shortdate;
}
}
});
別的東西要注意的是,我在ASP.NET VB應用程序中運行這個,不知道這是否有所作爲。
我完全難住,任何人都可以看到我不能?