# FAQ

1. **問：「Unit（點數）」是什麼？如何使用？**
**答：** 請注意，Units 是 YouCam API 運作所用的計費單位；不同的 AI 功能會扣除不同數量的點數。在本文件中，Unit 的代號為「Credit」。
2. **問：為什麼會出現 InvalidTaskId 錯誤？**
**答：** 當您查詢一個已逾時任務的狀態時，會收到 ***InvalidTaskId*** 錯誤。因此，當您執行 AI 任務後，必須**輪詢**，在 ***polling_interval*** 內檢查狀態，直到狀態變成 *success* 或 *error*。
3. **問：如何進行認證？**
**答：** 您的 API Key 就是完成認證程序所用的 ***Bearer Token***。請使用 **Bearer Token** 在請求標頭中納入您的 API 金鑰：

```
Authorization: Bearer YOUR_API_KEY
```
如需更多資訊與問題，請參考我們的[部落格頁面](https://www.makeupar.com/consumer/blog)與 [API playground](https://yce.makeupar.com/api-console/en/api-playground/ai-skin-analysis/)，或發送電子郵件至 [YouCamOnlineEditor_API@perfectcorp.com](mailto:YouCamOnlineEditor_API@perfectcorp.com)。我們的客戶成功團隊很樂意為您協助。;)
4. **問：如何用 curl 上傳圖片？**
**答：** curl --location --request PUT '{url_api_response}' --header '{headers_in_api_response}' --data-binary @'{local_file_path}'

```
curl --location --request PUT 'https://example.com/sample-result-url' --header 'Content-Type: image/jpg' --header 'Content-Length: 50000'  --data-binary @'./test.jpg'
```

5. **問：AI API 支援哪些平台？可以在行動裝置上使用嗎？**
**答：** AI API 可跨平台順暢運作。由於它建構於標準 RESTful API，您可以用於伺服器對伺服器（server-to-server）通訊、行動裝置，或網頁瀏覽器中，選擇最適合您需求的方式。
6. **問：可以在 Android 與 iOS 上透過 Flutter 使用 AI API 嗎？**
**答：**
完全可以。由於 AI API 是標準 RESTful API，您可以使用 Flutter 內建的 HTTP API 發送請求。
以下是 Flutter 官方關於網路查詢的文件。
  * https://docs.flutter.dev/cookbook/networking/fetch-data
  * https://pub.dev/packages/http
以下是在 Flutter 中使用 http 套件，透過 Bearer 認證呼叫 http GET 的簡易方式：

```dart
import 'dart:convert';
import 'package:http/http.dart' as http;

Future<void> fetchData() async {
    String token = "your_bearer_token_here"; // 替換為您實際的 token

    final response = await http.get(
        Uri.parse("https://yce-api-01.makeupar.com/s2s/v2.0/task/ai-task"), // 將 `ai-task` 替換為您要使用的 AI 功能。
        headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer $token",
        },
    );

    if (response.statusCode == 200) {
        print("Data fetched successfully: ${response.body}");
    } else {
        print("Failed to fetch data: ${response.statusCode}");
    }
}
```
認證的關鍵步驟：
  - 取得 Token – 您可以使用 SharedPreferences 或其他安全儲存方式來儲存與取得 token。
  - 在標頭中納入 Token – 在請求標頭中使用 "Authorization": "Bearer $token"。
  - 處理過期的 Token – 若 API 回傳 401 InvalidAccessToken 錯誤，請視需要刷新 token。
7. **問：API key 就是 API key，那麼要到哪裡找到 secret key？**
**答：** secret key 只會在您第一次產生時建立。因此務必立即儲存，之後將無法再次查看。
8. **問：可以透過 Wix 將 AI API 整合到您的網站嗎？**
**答：** 我們目前沒有 AI API 與 Wix 整合的官方指南。不過，RESTful API 本身對平台沒有任何限制，只要該平台支援標準的網頁查詢即可。
我們強烈建議先閱讀 Wix 提供的官方文件：https://dev.wix.com/docs/develop-websites/articles/get-started/integrate-with-3rd-parties
Wix 提供多種與第三方 API 整合的方法，主要透過其 Velo 開發平台：
  * Fetch API：
這是最常見的方法，也是標準 JavaScript Fetch API 的實作。您可以從 Wix 網站的前端或後端程式碼，對外部 API 發送 HTTP 請求。
後端呼叫：基於安全性建議（尤其是需要金鑰的 API），並為避免 CORS 問題，請使用後端呼叫。使用 Secrets Manager 安全儲存 API 金鑰。
前端呼叫：可行，但安全性較低，且可能遇到 CORS 限制。
  * npm 套件：
Velo 支援使用經核准的 npm 套件，讓您可以運用大量預先建置的 JavaScript 模組，以第三方功能擴充網站功能。
  * Service Plugins（舊稱 SPIs/Custom Extensions）：
這些插件可將自訂邏輯注入，或直接將第三方服務整合進 Wix 的商業解決方案（例如 Wix Stores、Wix Bookings）。Service plugins 讓您可以客製化既有應用流程的特定環節，或整合外部服務以實現自訂運費、動態定價、替代金流服務等功能。
  * HTTP Functions：
您可以將網站功能以 API 形式對外開放，讓第三方服務呼叫您 Wix 網站的後端函式，與網站的資料或邏輯互動。
整合步驟（以 Fetch API 為例）：
  * 儲存 API 金鑰：若第三方 API 需要認證，請將 API 金鑰等敏感憑證安全儲存於 Wix 的 Secrets Manager。
匯入 wix-fetch：在您的 Velo 後端或前端程式碼中，匯入 wixFetch 模組。

```JavaScript
import { fetch } from 'wix-fetch';
```
  * 發送 API 呼叫：使用 fetch 函式向第三方 API 發送請求，包含必要的標頭與內容資料。

```JavaScript
export async function getWeatherData() {
    const apiKey = await getSecret("yourApiKeyName"); // 自 Secrets Manager 取得
    const response = await fetch(`https://api.weatherapi.com/v1/current.json?key=${apiKey}&q=London`, {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json'
        }
    });
    const data = await response.json();
    return data;
}
```
  * 處理回應：處理自 API 收到的資料，並整合到網站的設計或功能中。
9. **問：可以將 AI API 整合到 WooCommerce 嗎？**
**答：** 我們目前沒有 AI API 與 WooCommerce 整合的官方指南。不過，RESTful API 本身對平台沒有任何限制，只要該平台支援標準的網頁查詢即可。
我們強烈建議先閱讀 WooCommerce 提供的官方文件：https://woocommerce.com/document/woocommerce-rest-api/
將第三方 API 與 WooCommerce 整合，可強化商店功能並簡化營運。可透過以下幾種方式達成：
  * 使用 WooCommerce REST API：
WooCommerce 提供完善的 REST API，讓外部應用程式與您的商店資料互動。
您可以在 WooCommerce > Settings > Advanced > REST API 中，建立具有特定權限（讀取、寫入，或讀寫）的 API 金鑰。
這讓您可以透過建立自訂整合，或使用運用此 API 的第三方服務，自動化庫存同步、訂單處理、客戶資料同步等任務。
  * 使用外掛：
許多 WordPress 與 WooCommerce 外掛專為整合熱門第三方服務而設計，例如金流服務、貨運服務、CRM 系統與會計軟體。
外掛通常提供現成的整合，簡化設定流程，減少自訂程式碼的需求。
範例包括特定支付處理器的外掛（例如 Stripe、PayPal）、貨運解決方案（例如 FedEx、USPS），或如 WPGet API 等通用 API 整合工具。
  * 自訂程式碼與 Webhooks：
對於獨特的整合需求，或沒有合適外掛可用時，您可以在 WordPress 佈景主題或自訂外掛中實作自訂程式碼。
這涉及使用 WordPress/WooCommerce 的 hooks 與 filters，在特定事件觸發時呼叫 API（例如 woocommerce_payment_complete 用於購買後的動作）。
也可以使用 Webhooks，在特定事件發生時（例如新訂單、產品更新），將即時資料從 WooCommerce 送至第三方服務。