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

最近两天在某个群里跟一个小伙伴聊了一下自己在手机上使用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

    

首先,我们需要运行一下connect.php来跟Pocket进行认证

     $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是如何运行的:


$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 "

牛逼啊,你已成功认证Pocket!

"; echo "你的access_token是: ". $access_token[0]; } else{ echo "艾玛出错了 :( "; } ?>

到此,我们已经获取到Pocket的consumer_keyaccess_token,我们能干嘛呢?构造URL来调用API撒,于是我试了一下:

     $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

你可能感兴趣的:(api,pocket,php)