利用Pocket API实现分享自己的阅读列表

软件结
• 阅读 5575

最近两天在某个群里跟一个小伙伴聊了一下自己在手机上使用APP,很意外的是我两都是Pocket的忠实用户,就顺便聊了一下自己平时都是看一些什么文章,说得比较多...对于我个人来说,Pocket基本上就是我在手机上或者PC网页上看过的所有我认为的好文集合,因为在品诗睡觉前看文章的时候,我都习惯性地将自己认为好的文章收藏到Pocket中。既然这样为什么不直接将整个Pocket的阅读列表分享给别人看一些呢,晒一晒自己的“阅读轨迹”,于是乎就想到调用一下Pocket API,将阅读列表直接放在自己的博客里,具体可以查看:我的Pocket列表

好了,废话说了这么多,来看看这个实施过程:
到Pocket的官网去看了一下官方文档,貌似Pocket现在还不支持个人用户获取整个文章内容,但是可以获取到文章的标题,摘要,原来的网址,标签等内容,那就无压力了撒,知道网址就OK了。

然后我就在Pocket中创建了一个私人的APP,因为在调用API的时候需要两个重要的数据:

  1. consumer_key
  2. 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_keyaccess_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

  1. tag_name = 只返回有标签的

  2. untagged = 只返回没有标签的

contentType

  1. article = 只返回文章

  2. video = 只返回视频或者内嵌视频的

  3. image = 只返回图片

detailType

  1. simple = 只返回标题和url

  2. 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

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
kenx kenx
2年前
爆肝一周,我开源了ChatGPT 中文版接口,官方1:1镜像支持全部 官方接口
这里实现我之前文章承诺承接上文现在ChatGPT提供了api接口可以让我自己对接去实现我们自己想要gpt应用,但是由于一些原因,国内也不开放接口,所以我就1:1自己对接了官方所有接口。大家可以通过我的接口轻松实现一个自己定制化的聊天ai应用小程序接口功能聊
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这