haixunMaster/components/layout/threads-oauth-toast.tsx

45 lines
1.7 KiB
TypeScript
Raw Permalink 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.

"use client";
import { useEffect } from "react";
import { notify } from "@/lib/notifications/store";
const THREADS_ERROR_LABELS: Record<string, string> = {
no_active_account: "請先在側欄選定帳號,再綁定官方 API。",
missing_app_credentials: "系統尚未設定 Threads App請聯絡管理員。",
missing_code: "授權未完成,請重新綁定。",
account_not_found: "帳號不存在,請重新選擇後再試。",
"4476002": "Threads 不認得這個 App ID請聯絡管理員檢查 Meta 後台設定。",
"1349187": "Meta 拒絕不安全的 http 登入,請使用 https 網址。",
"1349168": "Redirect URI 未列入 Meta 白名單,請聯絡管理員。",
};
export function ThreadsOAuthToast() {
useEffect(() => {
const params = new URLSearchParams(window.location.search);
const connected = params.get("threads_connected");
const error = params.get("threads_error");
const bindThreads = params.get("bind_threads");
if (connected === "1") {
notify({ type: "success", title: "Threads 官方 API 已綁定" });
window.history.replaceState({}, "", window.location.pathname);
} else if (error) {
notify({
type: "error",
title: "Threads 授權失敗",
message: THREADS_ERROR_LABELS[error] ?? decodeURIComponent(error),
});
window.history.replaceState({}, "", window.location.pathname);
} else if (bindThreads === "1") {
notify({
type: "info",
title: "歡迎使用巡樓",
message: "建議先到「連線設定」綁定 Threads 帳號,才能開始海巡與發文。",
href: "/connections",
});
window.history.replaceState({}, "", window.location.pathname);
}
}, []);
return null;
}