最近两天在某个群里跟一个小伙伴聊了一下自己在手机上使用APP,很意外的是我两都是Pocket的忠实用户,就顺便聊了一下自己平时都是看一些什么文章,说得比较多…对于我个人来说,Pocket基本上就是我在手机上或者PC网页上看过的所有我认为的好文集合,因为在品诗睡觉前看文章的时候,我都习惯性地将自己认为好的文章收藏到Pocket中。既然这样为什么不直接将整个Pocket的阅读列表分享给别人看一些呢,晒一晒自己的“阅读轨迹”,于是乎就想到调用一下Pocket API,将阅读列表直接放在自己的博客里,具体可以查看:我的Pocket列表
好了,废话说了这么多,来看看这个实施过程:
到Pocket的官网去看了一下官方文档,貌似Pocket现在还不支持个人用户获取整个文章内容,但是可以获取到文章的标题,摘要,原来的网址,标签等内容,那就无压力了撒,知道网址就OK了。
然后我就在Pocket中创建了一个私人的APP,因为在调用API的时候需要两个重要的数据:
- consumer_key
- access_token
其中consumer_key
可以在创建APP之后获得,由Pocket官网分配,access
_token则可以在运行你APP时获得。比如以下的一段代码:
在config.php
中
<?php
//这里填上你创建APP时获得的consumer_key
$consumer_key = 'YOUR_CONSUMER_KEY_HERE';
// path.to 就是你网站的主机域名,比如http://www.jellybool.com/callback.php.
$redirect_uri = 'http://path.to/callback.php';
//在你认证Pocket之前,这个YOUR_ACCESS_TOKEN_HERE你可以先不要填,在连接的时候Pocket会给你一个access_token
$access_token = 'YOUR_ACCESS_TOKEN_HERE';
?>
首先,我们需要运行一下connect.php
来跟Pocket进行认证
<?php
require_once('config.php');
$url = 'https://getpocket.com/v3/oauth/request';
$data = array(
'consumer_key' => $consumer_key,
'redirect_uri' => $redirect_uri
);
$options = array(
'http' => array(
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
// $result在返回的结果中就包含了access_token
$code = explode('=',$result);
$request_token = $code[1];
// 到这里 需要重定向到Pocket,以获取access_token
header("Location: https://getpocket.com/auth/authorize?request_token=$request_token&redirect_uri=$redirect_uri?request_token=$request_token");
?>
下面来看看callback.php
是如何运行的:
<?php
require_once('config.php');
$request_token = $_GET['request_token'];
$url = 'https://getpocket.com/v3/oauth/authorize';
$data = array(
'consumer_key' => $consumer_key,
'code' => $request_token
);
$options = array(
'http' => array(
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
// $result在返回的结果中就包含了access_token
$access_token = explode('&',$result);
if($access_token[0]!=''){
echo "<h1>牛逼啊,你已成功认证Pocket!</h1>";
echo "你的access_token是: ". $access_token[0];
} else{
echo "艾玛出错了 :( ";
}
?>
到此,我们已经获取到Pocket的consumer_key
和access_token
,我们能干嘛呢?构造URL来调用API撒,于是我试了一下:
<?php
require_once('config.php');
/* 关于更多的Pocket API参数,直接看文档
这里我只取回最近收藏的5篇文章。
API 查看地址: http://getpocket.com/developer/docs/v3/retrieve
*/
$url = 'https://getpocket.com/v3/get?count=5';
$data = array(
'consumer_key' => $consumer_key,
'access_token' => $access_token
);
$options = array(
'http' => array(
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);
?>
我来说说几个常用的:
tag
tag_name = 只返回有标签的
untagged = 只返回没有标签的
contentType
article = 只返回文章
video = 只返回视频或者内嵌视频的
image = 只返回图片
detailType
simple = 只返回标题和url
complete = 返回文章的标签,图片,作者,摘要,视频等
注意:Pocket 返回json数据
如果你只是想简单地看看返回什么东西,直接复制下面的url,放到Chrome的地址栏,Enter看看:Bingo.
https://getpocket.com/v3/get?consumer_key=$consumer_key&access_token=$access_token&state=all&contentType=article&sort=newest&detailType=complete
原文链接:http://www.jellybool.com/post/pocket-api