2021年3月6日 星期六

bit.ly 縮網址服務 api

因為某種緣故, 我需要這個服務, 網路上找的教學文章有些是舊的, get 的用法是 v3, 已經不能用了, 現在的 api 版本是 v4。

list 1. v3 用法, 已經不支援
1 http://api.bit.ly/v3/shorten?login=12ab&apiKey=9a123&longUrl=https%3A%2F%2F2.bp.blogspot.com%2F-.jpg&format=xml

v3 api 的回覆
1 <response>
2 <status_code>500</status_code>
3 <status_txt>INVALID_APIKEY</status_txt>
4 <data/>
5 </response>

而 apiKey 目前已經無法申請, 目前申請的是 access token, 所以如果有 apiKey 的人, 也許還可以用 v3 的 api 吧。申請 access token 需要先註冊, 然後到 profile settings/Generic access token 就可以申請。

或是直接點這裡: https://bitly.is/accesstoken

官方教學有一個介紹怎麼使用 api: https://dev.bitly.com/docs/getting-started/introduction

You'll use the POST method to the /v4/shorten endpoint. Append your access token as a header in your request. Here's an example: Authorization: Bearer {token}.

POST /v4/shorten https://api-ssl.bitly.com/v4/shorten

{
    "group_guid": "Ba1bc23dE4F",  
    "domain": "bit.ly",  
    "long_url": "https://dev.bitly.com"  
}  

A successful response will return the shortened link in the link object.

access token 要用 http header 的型式送出, 另外要用 post 送出 group_guid, domain, long_url, 這些欄位, 遠比 v3 的 get 方法複雜很多。不能單純用瀏覽器測試。

telegram 的朋友給了這個: How do I POST JSON data with cURL?

這樣我就不用寫程式, 用 curl 這個指令就可以完成這些動作。

結合「Create TinyURL Using Bitly API in PHP」這個範例, 終於打造出這個 script。

shorten.sh
 1 #!/bin/sh
 3
 4 curl -H "Content-Type: application/json" -v -i --request POST --data '{"long_url":"https://www.google.com"}' -H "Authorization: Bearer 1234567" https://api-ssl.bitly.com/v4/bitlinks

把 1234567 換成你申請的 access token 即可。shroten.sh 的例子是把 https://www.google.com 這個網址縮短。

如果成功的話會看到 list 5 的回應:
list 5. bit.ly 的回應
1 {"created_at":"2021-03-06T02:13:13+0000","id":"bit.ly/3c1wwgq","link":"https://bit.ly/3c1wwgq","custom_bitlinks":[],"long_url":"https://www.google.com/","archived":false,"tags":[],"deeplinks":[],"references":{"group":"https://api-ssl.bitly.com/v4/groups/Bl3218R7Sxz"}}

link 這個欄位提供了縮短後的網址。失敗的話也會傳回各式各樣的錯誤訊息, 方便除錯。

使用 post 就不需要 urlencoder, 比較方便。

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。