如何在最新版 Workflow 里調(diào)用 Pocket

Apple 今天收購(gòu)了 Workflow 對(duì)于 iOS Power Users 來(lái)說(shuō)是一個(gè)爆炸性新聞,我認(rèn)為釋放的信號(hào)是,Apple 開(kāi)始重視 iOS 平臺(tái)的自動(dòng)化了,哪天突然發(fā)布 macOS 的 Workflow 也不一定呢。

但最為遺憾的是,今天同步更新的 Workflow 1.7.3 去除了眾多競(jìng)爭(zhēng)對(duì)手的服務(wù),比如 Google Chrome, Uber, LINE, Telegram, Pocket 等等,非常遺憾。但是畢竟 Workflow 可以通過(guò) API 與各種服務(wù)進(jìn)行互動(dòng),今天就來(lái)講講如何利用 Pocket 的 API 讓我們能夠繼續(xù)在 Workflow 內(nèi)使用 Pocket.

一、申請(qǐng)一個(gè) App

先要去?Pocket 官網(wǎng)申請(qǐng)一個(gè)新的 App, 后續(xù)將使用這個(gè) App 的 Consumer Key 對(duì) Pocket 進(jìn)行調(diào)用。

之后就能在 App 管理頁(yè)面看到 Pocket 提供的 Consumer Key 了

二、獲取 request?token

向 Pocket 發(fā)送請(qǐng)求,我的 App 有一個(gè)新用戶(hù)啦,快給一個(gè) request token 吧, 用戶(hù)需要用這個(gè) token 進(jìn)行登錄。對(duì)于這個(gè)操作,Pocket 提供了兩種方案,這里我們用到了 JSON 的這種

按照 Pocket 文檔內(nèi)要求的格式,將對(duì)應(yīng)的信息填入 Workflow 內(nèi),consumer_key 內(nèi)填入上一步自己申請(qǐng)的 Consumer?Key. redirect_url 無(wú)所謂的,填啥都可以。


運(yùn)行這個(gè) Workflow 之后,將獲得 request token, 保存好,后續(xù)將要用到。

Workflow 下載:獲取 Token

三、利用此 Token?進(jìn)行登錄

獲取了 Token, 用戶(hù)需要用這個(gè) Token 進(jìn)行登錄,授權(quán) App 獲取用戶(hù)的信息。Pocket 也提供了兩種方式,直接打開(kāi) Pocket App 進(jìn)行授權(quán),或打開(kāi)網(wǎng)頁(yè)進(jìn)行授權(quán)。

我的 iPhone 上安裝了 Pocket App, 就選用了第一種。

第二步獲取到的 Token 填入 URL Schemes 的?YOUR_REQUEST_TOKEN?部分,完整的 URL Schemes 如下:

pocket-oauth-v1:///authorize?request_token=dcba4321-dcba-4321-dcba-4321dc& redirect_uri=pocketapp1234:authorizationFinished

將完整的 URL Schemes 填入 Workflow 并運(yùn)行,會(huì)自動(dòng)跳轉(zhuǎn)到 Pocket App 進(jìn)行授權(quán)

?登錄自己的賬戶(hù)即可進(jìn)行授權(quán)。

Workflow 下載:用戶(hù)授權(quán)

四、獲取授權(quán)賬戶(hù)的信息

用戶(hù)登錄進(jìn)行授權(quán)后,我們申請(qǐng)的這個(gè) App 還不知道剛剛究竟是哪位用戶(hù)進(jìn)行了授權(quán),所以這里還需要一步,獲取剛剛進(jìn)行授權(quán)的賬戶(hù)的信息。

同樣的,Pocket 提供了兩種方式,我們依舊選用 JSON 的這種。

?按照格式要求,將第二步獲取的 Token 填入?Request Body?中的?code?部分,運(yùn)行此 Workflow 即可。

運(yùn)行后會(huì)返回用戶(hù)的信息,這個(gè) access_token 是關(guān)鍵,后續(xù)向 Pocket 添加、修改文章,或者獲取 Pocket 內(nèi)的文章信息,全靠它了。**記得一定要保管好 access_token, 不要外泄,以免被不法分子利用。

Workflow 下載:獲取用戶(hù)信息

五、實(shí)戰(zhàn)應(yīng)用

有了第一步獲取的 Consumer Key 和第四步獲取的?access_token, 我們就能夠在 Workflow 內(nèi)對(duì) Pocket 進(jìn)行操作了。

1. 向 Pocket?內(nèi)添加文章

Pocket 官網(wǎng)提供了可供調(diào)用的參數(shù)列表,這里就來(lái)個(gè)最簡(jiǎn)單的,向 Pocket 內(nèi)添加一篇文章,并打上 Tag.

Workflow 如下圖:

Request body 內(nèi)的 consumer_key 填入第一步獲取的 Consumer Key, access_token 填入第四步最后獲取到的 access_token.

url?部分這里直接填入了 Wikipedia 內(nèi)一篇文章的鏈接,當(dāng)然,最「正確」的用法應(yīng)該填入一個(gè)變量,變量包含需要保存的文章的鏈接。有關(guān) Workflow 內(nèi)變量的相關(guān)知識(shí)請(qǐng)參閱 JailbreakHum 的?Workflow 系列文章。

tags?填入需要的 Tag, 這里其實(shí)可以用 Workflow 內(nèi)置的 Ask For Input 動(dòng)作,每次添加不同的 Tag. 同樣的,相關(guān)知識(shí)請(qǐng)參閱 JailbreakHum 的 Workflow 系列文章。

title?是個(gè)可選的參數(shù),如果該文章沒(méi)有標(biāo)題,Pocket 就會(huì)調(diào)用?title?內(nèi)的描述,設(shè)定為該文章的標(biāo)題;如果該文章有標(biāo)題,title?內(nèi)的描述會(huì)被忽略。

運(yùn)行 Workflow 之后會(huì)返回一段文字,看到?"stutus":1, 說(shuō)明成功添加此文章至 Pocket 了。

Workflow 下載:向 Pocket 添加文章

2. 獲取 Pocket?內(nèi)保存的文章

獲取 Pocket 內(nèi)的保存的文章,Pocket 官方提供了十分細(xì)致的篩選參數(shù),可以精確定位到每一篇文章。

我這里只演示一下實(shí)現(xiàn)老版本 Workflow 所提供的幾個(gè)功能。

右邊是老版本 Workflow 提供的幾個(gè)篩選參數(shù),紅線(xiàn)代表著對(duì)應(yīng)關(guān)系。

與前面添加文章至 Pocket 的 Workflow 一樣,這三個(gè)參數(shù)都可以設(shè)置成相應(yīng)的變量,我這里為了演示方便直接輸入了固定的參數(shù)。

count?內(nèi)的數(shù)字代表此次獲取文章的最大數(shù)量;?state?的可選參數(shù)有?unread,?archive?和?all;?search?內(nèi)填入搜索的關(guān)鍵字;?tag?則是文章所包含的 Tag.

關(guān)鍵的部分來(lái)了,在老版本 Workflow 中運(yùn)行 Get Items from Pocket 后,返回的是文章的鏈接;而新版 Workflow 中,調(diào)用 API 后會(huì)返回一堆 JSON 的代碼,具體的參數(shù)請(qǐng)看下圖:

此時(shí)就需要利用?Get Dictionary Value?和?Repeat with Each?來(lái)獲取文章的鏈接,具體的 Workflow 如下圖:

運(yùn)行之后,對(duì)比一下老版本 Workflow 內(nèi)置的動(dòng)作返回的結(jié)果,是一樣的吧:

由于?Pocket 官方提供的參數(shù)十分豐富,用戶(hù)們完全可以根據(jù)自己的需求進(jìn)行修改,獲取想要的結(jié)果,這里只是拋磚引玉,大家可以自行查看官方文檔。

Workflow 下載:獲取 Pocket 內(nèi)的文章

3. 更改 Pocket?內(nèi)保存的文章

這個(gè)功能是原來(lái)老版本 Workflow 所沒(méi)有得,我們可以利用 API 對(duì) Pocket 內(nèi)的文章進(jìn)行批量更改,比如批量 Favorite 文章,批量刪除文章等等,完整參數(shù)請(qǐng)看?Pocket 官網(wǎng)。

下面舉例說(shuō)明如何批量 Favorite 文章。

對(duì)文章進(jìn)行操作,需要獲取文章的?item_id, 獲取方式與前面獲取?Pocket 文章鏈接的方式大同小異,只不過(guò)在?Get Dictionary Value?時(shí)需要更改一個(gè) Key.

這里是獲取 Pocket 內(nèi)包含?Workflow?字樣的 10 篇文章。

通過(guò)?Get Dictionary Value?獲取文章的?item_id.

下一步就是關(guān)鍵部分了,先上代碼:

https://getpocket.com/v3/send?actions=[{“action”:”favorite”,”item_id”:229279689}]&access_token=[ACCESS_TOKEN]&consumer_key=[CONSUMER_KEY]

注意看花括號(hào)內(nèi)的?action?后面的?favorite, 意思是告訴 Pocket 服務(wù)器將指定的文章 Favorite,?item_id?則是指定文章的 ID, 已經(jīng)在前一步用?Get Dictionary Value?獲取到了,最后就是?access_token?和?consumer_key, 分別在前面第一步第四步獲取到了,記得替換時(shí)要將中括號(hào)?[]?一并替換掉。

將上述代碼 encoded 之后發(fā)送給 Pocket 服務(wù)器就行。但是經(jīng)過(guò)實(shí)測(cè), Workflow 內(nèi)置的?URL Encode?動(dòng)作轉(zhuǎn)換出的代碼 Pocket 服務(wù)器無(wú)法正確識(shí)別,下面是 Pocket 官方提供的已經(jīng) encode 好的代碼,更改相應(yīng)參數(shù)時(shí)一定要小心。

https://getpocket.com/v3/send?actions=%5B%7B%22action%22%3A%22favorite%22%2C%22item_id%22%3A229279689%7D%5D&access_token=[ACCESS_TOKEN]&consumer_key=[CONSUMER_KEY]

將代碼改好后利用 Workflow 的?Get Contents of URL?動(dòng)作?Get?出去:

?看到返回結(jié)果全是?"status":1?說(shuō)明操作就成功了。

Workflow 下載:批量更改 Pocket 內(nèi)的文章

結(jié)語(yǔ)

單就 Workflow 移除 Pocket 支持這件事來(lái)說(shuō),一定程度上可以理解為,關(guān)上了一扇門(mén),卻讓我們發(fā)現(xiàn)了更大的一扇門(mén),利用 Pocket 提供的 API 可以實(shí)現(xiàn)比老版本 Workflow 自帶動(dòng)作更豐富的動(dòng)作。同時(shí)也說(shuō)明了 Workflow 十分強(qiáng)大的擴(kuò)展性(前面三個(gè) Workflow 其實(shí)可以合并為一個(gè),新手可以來(lái)練練手)。

另一方面,Apple 這幾年一直在說(shuō) iPad Pro 多么專(zhuān)業(yè),但事實(shí)上口碑卻很一般,最大的短板在于 iOS 功能不夠,真正厲害的生產(chǎn)力 App 也不多。這次 Apple 收購(gòu) Workflow, 似乎是一個(gè)積極的信號(hào),希望 Apple 能真正重視一下 Power Users 的需求,在 iOS 11 中多帶來(lái)一些類(lèi)似 Drag & Drop 的強(qiáng)大功能。


本文首發(fā)于《如何在最新版 Workflow 里調(diào)用 Pocket》,作者:Xuesong

評(píng)論