feat(oauth): 账号名改从 zone.account 取,去掉 account-settings.read 依赖
实测确认 GET /zones 每个 zone 自带 account {id,name},该接口只需 zone.read,
因此账号 id 与账号名都不必再调 GET /accounts(account-settings.read)。
顺带修掉 account_id 旧字段在当前响应里已为 null 导致的降级路径取不到账号 id。
- RealCFApi.discover 只列 /zones,移除 listAccounts 与 accountSource
- scope 候选集去掉 account-settings.read;设置页移除「含账号名权限」按钮
- 设置页 Scope 说明与 docs/02、README 同步(补 User Details Read 的区别说明)
- 85/85 测试通过(新增 zone 带 account / 不带 account 两种断言)
This commit is contained in:
@@ -337,10 +337,6 @@ export interface OAuthPreflightResult {
|
||||
/** 本应用默认需要的 scope(点号分隔)——与后端 CF_OAUTH_SCOPES_DEFAULT 保持一致 */
|
||||
export const CF_OAUTH_SCOPES_DEFAULT = "zone.read workers-scripts.write email-routing-rule.write";
|
||||
|
||||
/** 可选:勾了 Account Settings Read 才能显示真实账号名,否则用第一个域名代替 */
|
||||
export const CF_OAUTH_SCOPES_WITH_ACCOUNT_NAME =
|
||||
"account-settings.read zone.read workers-scripts.write email-routing-rule.write";
|
||||
|
||||
/** 授权配置自检:探测 Cloudflare 授权端点是否接受当前配置(不产生授权) */
|
||||
export const oauthPreflight = () => api<OAuthPreflightResult>("/api/oauth/cloudflare/preflight");
|
||||
|
||||
|
||||
@@ -38,7 +38,6 @@ import {
|
||||
oauthPreflight,
|
||||
putSettings,
|
||||
CF_OAUTH_SCOPES_DEFAULT,
|
||||
CF_OAUTH_SCOPES_WITH_ACCOUNT_NAME,
|
||||
type OAuthPreflightResult,
|
||||
type SettingsInfo,
|
||||
} from "../api.ts";
|
||||
@@ -391,8 +390,7 @@ function CloudflareTab({ info, onSaved }: { info: SettingsInfo; onSaved: () => v
|
||||
<>
|
||||
Cloudflare 的 OAuth scope 是<b>点号分隔</b>(zone.read),冒号写法(zone:read)是 wrangler 的
|
||||
第一方简写,第三方客户端会被判 invalid_scope。必须与 OAuth App 里勾选的权限一致;检测按钮会
|
||||
直接告诉你哪些已授权、哪些还要补勾。<b>account-settings.read 是可选的</b>:勾了才显示真实账号名,
|
||||
不勾则用第一个域名代替,不影响接入。
|
||||
直接告诉你哪些已授权、哪些还要补勾。三项就够:账号名随 zone 一起返回,不需要账号级权限。
|
||||
</>
|
||||
}
|
||||
>
|
||||
@@ -449,15 +447,6 @@ function CloudflareTab({ info, onSaved }: { info: SettingsInfo; onSaved: () => v
|
||||
>
|
||||
填入最小 scope
|
||||
</Button>
|
||||
<Button
|
||||
size="small"
|
||||
onClick={() => {
|
||||
form.setFieldValue("scope", CF_OAUTH_SCOPES_WITH_ACCOUNT_NAME);
|
||||
message.success("已填入含账号名权限的 scope(需 App 里也勾了 Account Settings Read)");
|
||||
}}
|
||||
>
|
||||
含账号名权限
|
||||
</Button>
|
||||
{check.scopes.allowed.length > 0 && (
|
||||
<Button
|
||||
size="small"
|
||||
|
||||
Reference in New Issue
Block a user