API 參考
finlab
本頁內容7
finlab 模組負責登入與憑證管理。在自己的電腦或 Colab 用瀏覽器登入一次,之後就會自動使用;伺服器、Docker、排程這類沒有瀏覽器的環境,改用環境變數憑證。
選哪個函式
| 你想做的事 | 用這個 |
|---|---|
| 在自己的電腦登入一次,之後自動使用 | python -m finlab login |
| 在 Python、Jupyter 或 Colab 裡登入 | finlab.login() |
| 讓伺服器、Docker、排程不用瀏覽器也能使用 | python -m finlab token --env 產生的三個環境變數 |
| 查看登入狀態與方案 | python -m finlab status |
| 在程式裡確認是否已登入、取得 token | finlab.get_token() |
| 登出 | python -m finlab logout |
從舊版 FINLAB_API_TOKEN 遷移 | python -m finlab migrate |
在自己的電腦或 Colab 登入
本機電腦(推薦)
在終端機執行一次,之後同一台電腦的 Python 都會自動使用這份憑證:
python -m finlab login或在 Python / Jupyter 中登入:
import finlab
# 1. 呼叫 login() 不帶參數
# 2. 瀏覽器會自動開啟 FinLab 登入頁面
finlab.login()
# 3. 登入成功後,憑證會儲存在 ~/.finlab/credentials.json
# 4. 之後使用不需要再次登入- 憑證儲存位置:
~/.finlab/credentials.json - 有效期限:60 天(自動更新)
若瀏覽器登入失敗、被拒絕或逾時,finlab.login() 會拋出 finlab.exceptions.LoginError(RuntimeError 的子類別),不會再默默返回。
Google Colab
import finlab
finlab.login() # 依畫面指示在瀏覽器完成登入finlab.login
login(api_token) -> None登錄量化平台。
不傳入參數時啟動瀏覽器登入,成功後憑證存於 ~/.finlab/credentials.json,
之後同一台機器會自動使用。Colab 同樣直接呼叫 finlab.login()。
無瀏覽器的環境(伺服器、排程)請在本機執行 python -m finlab token --env,
並設定 FINLAB_REFRESH_TOKEN、FINLAB_SESSION_ID、FINLAB_API_KEY。
參數
api_tokenstr已棄用的舊版 api_token,請改用瀏覽器登入。
可能的錯誤
LoginError瀏覽器登入失敗、被拒絕或逾時。
在伺服器、Docker、排程使用
沒有瀏覽器的環境不用呼叫 finlab.login()。先在已登入的本機匯出憑證:
python -m finlab token --env
# export FINLAB_REFRESH_TOKEN="..."
# export FINLAB_SESSION_ID="..."
# export FINLAB_API_KEY="..."再把這三個值設成目標環境的環境變數(例如 docker-compose、GitHub Actions secrets、Cloud Functions 環境變數),程式中不需要呼叫 finlab.login():
from finlab import data
close = data.get('price:收盤價') # 自動讀取 FINLAB_REFRESH_TOKEN 等環境變數確認登入狀態與登出
在終端機查看狀態或登出:
python -m finlab status # 顯示登入狀態與方案
python -m finlab logout # 清除本機憑證並移除伺服器端 session若曾設定環境變數憑證,登出時也請一併移除 FINLAB_REFRESH_TOKEN、FINLAB_SESSION_ID、FINLAB_API_KEY(以及舊版 FINLAB_API_TOKEN)。
在 Python 裡用 finlab.get_token() 確認是否已登入:
import finlab
try:
token, token_type = finlab.get_token()
print(f"✅ 已登入({token_type})")
except RuntimeError:
print("❌ 未登入")finlab.get_token
get_token() -> tuple[str, str]取得登錄會員的認證 token。
認證優先順序:
- ~/.finlab/credentials.json (新版 Firebase auth) → 返回 id_token
- FINLAB_ID_TOKEN 環境變數 (新版 Firebase auth) → 返回 id_token
- FINLAB_API_TOKEN 環境變數 (舊版) → 返回 api_token
- 互動式登入
回傳
tupletuple[str, str](token_string, token_type) where token_type is 'id_token' or 'api_token'
FinLab 怎麼找到你的憑證
| 方式 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
瀏覽器登入(python -m finlab login / finlab.login()) | 安全、方便、自動更新 Token | 需要瀏覽器 | 本機開發、Jupyter、Colab |
環境變數憑證(python -m finlab token --env) | 不需瀏覽器、不寫入程式碼 | 需先在本機登入一次 | 伺服器、Docker、排程、CI |
FINLAB_API_TOKEN(已棄用) | — | 已棄用,未來將移除 | 請遷移 |
FinLab 會按照以下順序尋找認證資訊:
FINLAB_REFRESH_TOKEN+FINLAB_SESSION_ID+FINLAB_API_KEY環境變數(三個都設定時才生效)~/.finlab/credentials.json:瀏覽器登入產生的憑證FINLAB_ID_TOKEN環境變數:供瀏覽器 / Pyodide 執行環境使用FINLAB_API_TOKEN環境變數:舊版 API Token(已棄用,會出現警告)- 互動式登入:以上都沒有時啟動瀏覽器登入
常見問題
瀏覽器登入失敗怎麼辦?
finlab.login() 失敗時會拋出 LoginError 並附上處理方式。常見原因:
缺少 cryptography 套件
pip install cryptography無瀏覽器環境(如伺服器)
- 在本機執行
python -m finlab login,再執行python -m finlab token --env - 把輸出的
FINLAB_REFRESH_TOKEN、FINLAB_SESSION_ID、FINLAB_API_KEY設為伺服器環境變數
- 在本機執行
登入逾時或防火牆阻擋
- 重新執行
finlab.login(),並在時限內完成瀏覽器登入 - 檢查網路設定
- 重新執行
還在使用 FINLAB_API_TOKEN 怎麼辦?
執行 python -m finlab migrate 查看遷移步驟:本機改用 python -m finlab login,無瀏覽器環境改用 python -m finlab token --env 產生的三個環境變數,然後移除 FINLAB_API_TOKEN。
下一步
- 指令列介面(CLI)
login、token、status、logout、migrate指令說明。 - 快速上手 從安裝、登入到跑出第一個回測。
- 常見問題 更多登入、資料下載與回測相關問題。
這一頁有幫到你嗎?