Files
mdclient/auth_example.py
Timmy 38b4bc5377 Initial commit: Python library for Markdown note services
- Add MDAuth class for authentication and session management
- Add MDClient class for note operations (CRUD + export/search)
- Add CLI tool mdclient_cli.py for quick operations
- Support for CodiMD, HedgeDoc, and HackMD services
- Multi-endpoint API compatibility

Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
2026-03-17 14:38:54 +08:00

174 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
MDclient 認證範例
展示如何進行認證和登入
"""
from mdclient import MDAuth, MDClient
import os
def basic_login_example():
"""基本登入範例"""
print("=== 基本登入範例 ===\n")
# 建立認證物件
auth = MDAuth(
base_url="https://codimd.lotimmy.com",
cookie_file="key.conf"
)
# 登入
email = "your@email.com"
password = "your_password"
success = auth.login(email, password)
if success:
print("✓ 登入成功!")
# 測試 Cookie
is_valid = auth.test_cookie()
print(f"Cookie 有效: {is_valid}")
else:
print("✗ 登入失敗")
def env_login_example():
"""使用環境變數登入"""
print("\n=== 使用環境變數登入 ===\n")
# 從環境變數讀取
email = os.getenv('MDCLIENT_EMAIL')
password = os.getenv('MDCLIENT_PASSWORD')
url = os.getenv('MDCLIENT_URL', 'https://codimd.lotimmy.com')
if email and password:
auth = MDAuth(base_url=url)
success = auth.login(email, password)
if success:
print("✓ 使用環境變數登入成功")
# 立即可用客戶端
client = MDClient(base_url=url)
notes = client.list_notes()
print(f"找到 {len(notes)} 筆筆記")
else:
print("✗ 環境變數未設定")
print("請在 .env 檔案中設定:")
print(" MDCLIENT_EMAIL=your@email.com")
print(" MDCLIENT_PASSWORD=your_password")
def load_existing_session():
"""載入已儲存的會話"""
print("\n=== 載入已儲存的會話 ===\n")
auth = MDAuth()
# 檢查是否已有 Cookie
cookies = auth.load_cookie()
if cookies:
print("✓ 找到已儲存的 Cookie")
# 測試是否仍然有效
is_valid = auth.test_cookie()
if is_valid:
print("✓ Cookie 仍然有效,可以直接使用")
# 建立客戶端
client = MDClient()
notes = client.list_notes()
print(f"找到 {len(notes)} 筆筆記")
else:
print("✗ Cookie 已過期,需要重新登入")
else:
print("✗ 找不到已儲存的 Cookie請先登入")
def custom_server_example():
"""連接到自訂伺服器"""
print("\n=== 連接到自訂伺服器 ===\n")
# 連接到不同的伺服器
auth = MDAuth(
base_url="https://demo.hedgedoc.org",
cookie_file="hedgedoc_cookies.conf"
)
print("提示:取消註解以下程式碼來登入")
# auth.login("user@example.com", "password")
# client = MDClient(
# base_url="https://demo.hedgedoc.org",
# cookie_file="hedgedoc_cookies.conf"
# )
def quick_start():
"""快速開始指南"""
print("=== 快速開始 ===\n")
print("1. 基本使用:")
print("""
from mdclient import MDAuth, MDClient
# 登入
auth = MDAuth()
auth.login("your@email.com", "password")
# 使用客戶端
client = MDClient()
notes = client.list_notes()
""")
print("\n2. 使用 .env 檔案:")
print("""
# 建立 .env 檔案
echo "MDCLIENT_EMAIL=your@email.com" > .env
echo "MDCLIENT_PASSWORD=your_password" >> .env
# 在程式碼中使用
import os
from dotenv import load_dotenv
from mdclient import MDAuth, MDClient
load_dotenv()
auth = MDAuth()
auth.login(os.getenv('MDCLIENT_EMAIL'), os.getenv('MDCLIENT_PASSWORD'))
client = MDClient()
notes = client.list_notes()
""")
print("\n3. 連接到自訂伺服器:")
print("""
from mdclient import MDAuth, MDClient
auth = MDAuth(base_url="https://your-server.com")
auth.login("user@example.com", "password")
client = MDClient(base_url="https://your-server.com")
notes = client.list_notes()
""")
def error_handling_example():
"""錯誤處理範例"""
print("\n=== 錯誤處理 ===\n")
auth = MDAuth()
success = auth.login("wrong@email.com", "wrong_password")
if not success:
print("✗ 登入失敗,請檢查帳密")
# 檢查 Cookie 是否存在
cookies = auth.load_cookie()
if not cookies:
print("✗ 找不到已儲存的會話,請先登入")
else:
print("✓ 找到已儲存的會話")
if __name__ == "__main__":
quick_start()
# basic_login_example()
# env_login_example()
# load_existing_session()
# custom_server_example()
# error_handling_example()