JSONP获取Twitter和Facebook文章数

原文链接: Retrieve Twitter and Facebook Counts with JSON
翻译人员: 铁锚

原文日期: 2014年02月19日

翻译日期: 2014年02月22日

!!! 原文是使用的Twitter和Facebook,因为国内被强,所以我觉得有用的是里面一个获取JSONP的那个工具类.


我很头疼的是,许多流行的 APIs 已经要求身份验证才能获取信息。

既然我可以访问到这些页面并取得信息,那为什么我不使用一些简单的代码来获取并跳过验证这一步呢?
我认为Twitter和Facebook要求身份验证来获取文章的数量,但事实证明你可以通过JSONP来获取这些信息。请参考下面的步骤。
The JavaScript
我将使用基本的JavaScript来告诉你如何做到这一点:
// 获取文章数量的封装对象
var socialGetter = (function() {
	/* JSONP: 获取脚本的工具函数 */
	function injectScript(url) {
		var script = document.createElement('script');
		script.async = true;
		script.src = url;
		document.body.appendChild(script);
	}

	return {
		getFacebookCount: function(url, callbackName) {
			injectScript('https://graph.facebook.com/?id=' + url + '&callback=' + callbackName);
		},
		getTwitterCount: function(url, callbackName) {
			injectScript('http://urls.api.twitter.com/1/urls/count.json?url=' + url + '&callback=' + callbackName);
		}
	};
})();

// 回调方法
function twitterCallback(result) {
	result.count && console.log('The count is: ', result.count);
}
function facebookCallback(result) {
	result.shares && console.log('The count is: ', result.shares);
}

// 调用
socialGetter.getFacebookCount('http://davidwalsh.name/twitter-facebook-jsonp', 'facebookCallback');
socialGetter.getTwitterCount('http://davidwalsh.name/twitter-facebook-jsonp', 'twitterCallback');
因为有众多轻量级的 micro-frameworks来处理JSONP,所以本文最重要的部分可能是获取信息的url了。根据需要和习惯选择你的JSONP工具!
Twitter和Facebook对于这些请求肯定有数量和频率上的限制,所以如果你的网站访问量很大,则JSONP很可能会被拦截或屏蔽. 一种快速的解决方案是将文章数量信息存储在sessionStorage中,但这只是针对单个用户的方式。如果你运行的网站流量较大,你最好选择在服务器端抓取数据并缓存下来,并在一定的时间内自动刷新。
发布了112 篇原创文章 · 获赞 1688 · 访问量 530万+
展开阅读全文

如何在添加新推文时解码twitter JSON?

05-24

<div class="post-text" itemprop="text"> <p>I hope that you can help me with this one. Basically what I am doing, is adding tweets to my twitter account through api from my website administration panel.</p> <p>It all works fine, BUT I cannot store the info to database because the json_decode variable that I have returns a NULL. I do not understand what is the appropriate way to get the info from twitter json. </p> <p>Here is my code: </p> <pre><code> $settings = array( 'oauth_access_token' => $oauth_access_token, 'oauth_access_token_secret' => $oauth_access_token_secret, 'consumer_key' => $consumer_key, 'consumer_secret' => $consumer_secret ); $connection = new TwitterAPIExchange($settings); $url = 'https://api.twitter.com/1.1/statuses/update.json'; $requestMethod = "POST"; $user = $twitter_user; $postfields = array( 'screen_name' => $user, 'status' => $twit ); $connection->buildOauth($url, $requestMethod) ->setPostfields($postfields) ->performRequest(); // get the contents of the JSON file $jsonCont = file_get_contents($connection); //decode JSON data to PHP array $content = json_decode($jsonCont, true); $conn = new mysqli($server, $username, $password, $database); $id = $content['id']; $created = $content['created_at']; $tweet = $content['text']; $by = $content['user']['name']; $sql = "INSERT INTO `twitter` (`idtwit`, `tweet`, `tweetedby`, `datet`) VALUES ('".$id."', '".$tweet."', '".$by."', '".$created."')"; $conn->query($sql); echo "<br /><div class='alert alert-info'>New record updated successfully</div>"; $conn->close(); </code></pre> <p>How to use json_decode properly with this ?! </p> <p>I have also tried to wrap it around the $connection request like so, eliminating my variable, but then, it will not post to twitter anymore.</p> <pre><code>$connection->json_decode(buildOauth($url, $requestMethod) ->setPostfields($postfields) ->performRequest(),$assoc = TRUE); </code></pre> </div> 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览