iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
Modern Web

我阿嬤都會的 kintone 客製化開發系列 第 3

Day 03 | 發送 request 至 kintone 時的身份驗證

  • 分享至 

  • xImage
  •  

發送請求至 kintone 獲取資料時,會在 header 中帶上 API token、或者是帳號密碼,兩種的帶法會不太一樣,這篇文章中,會簡單說明為什麼需要 token,以及如果有使用 kintone 的 Secure Access 服務該如何處理。

為什麼會需要 token

在 kintone 的應用程式設定中,有個可以發行「API 權杖」(以下簡稱 token)的地方,在這邊可以指定發行 token 的查看、新增、刪除等權限。

那問題來了,我們使用自己登入的帳號放在 header 後,也是可以發送 API,那要 token 做什麼?原因是因為在 kintone 中可以替每個使用者設定應用程式權限,如果當前使用者的權限不夠,又要求這次的操作要做某些特定權限才能做的事情,這時候就會報錯。

為了確保不管每個使用者都能有權限做某些事情,在特定情況下會使用開放權限的 token 來發送 API。

透過帳號密碼

如果是使用帳號密碼來發送請求,需要將帳號密碼轉成 base64 的格式,並且放在 header 中,做法如下:

  1. 將 帳號:密碼 轉成 base64
  2. header 中新增 X-Cybozu-Authorization 並帶上剛剛轉好的 value。

所以如果帳號密碼分別是: daniel 以及 a123456789 的話,發送請求時就需要帶上:

{
  "X-Cybozu-Authorization": ZGFuaWVsOmExMjM0NTY3ODk=
}

透過 API TOKEN

使用應用程式內發行的 token,需要先到應用程式後台中的 設定 > API 權杖 中產生。

接著將產生出來的值放到 header 中,key 要打上 X-Cybozu-API-Token

{
  "X-Cybozu-API-Token": "BuBNIwbRRaUvr33nWhaFsJxN0xH4NPN92"
}

關於 Secure Access

因為 Secure Access 會需要帶上憑證以及密碼才能發送請求,否則會被擋下來,所以在發請求的時候必須附上 .pfx 憑證,憑證可以在 kintone 中的 帳號設定 > 透過行動用戶端存取 找到。

有了憑證後我們試著用 Postman 以及在 Node 環境中搭配 axios 發送請求。

Postman

安裝好開啟後,點選右上角的 齒輪 > setting > Certificates 按下 Add Certificate... 後就會出現以下畫面:

輸入 Host、pfx、passphrase 之後,往後發送請求至這個 domain 的話,都會帶上這個憑證,如此一來就設定完成了。

Node(axios)

接著在 Node 環境中安裝 aioxs 並發送請求。 使用 new https.Agent 帶上 pfx 以及 passphrase 即可。

const fs = require("fs")
const axios = require("axios")
const https = require("https")

(async function () {
  try {
    const response = await axios.request({
      url: "https://test.s.cybozu.com/k/v1/record.json?app=29064&id=516",
      method: "get",
      headers: {
        "X-Cybozu-Authorization": "xxxxxx",
      },
      httpsAgent: new https.Agent({
        pfx: fs.readFileSync(dirname + "/xxxxxx.pfx"),
        passphrase: "xxxxxxxx",
      }),
    })
    console.log(response.data)
  } catch (error) {
    console.log(error)
  }
})()

以上就是請求時身份驗證的方式,如果你是用 Javscript 串接的話,也可以嘗試使用官方開發的套件 @kintone/rest-api-client,這個套件是基於 axios,官方也整合了帶上帳號密碼或 token 的方式在裡面,也可以選擇攜帶 pfx 。


上一篇
Day 02 | kintone JavaScript API & kintone Rest API
下一篇
Day 04 | 小試身手之「自動編碼」篇
系列文
我阿嬤都會的 kintone 客製化開發13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言