#!/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()