diff --git a/docs/external-entry.md b/docs/external-entry/README.md similarity index 90% rename from docs/external-entry.md rename to docs/external-entry/README.md index af413719..f81ee5e7 100644 --- a/docs/external-entry.md +++ b/docs/external-entry/README.md @@ -26,6 +26,10 @@ https:///external-entry?<参数> `mode=promotion` 只有在 `target=chat` 且同时提供有效的 `promotion_type` 时生效。 +## PSID 与登录状态流程 + +PSID 保存、登录状态判断和 Facebook Identity 绑定逻辑见 [PSID 与登录状态流程图](./psid-login-flow.md)。 + ## 使用示例 普通聊天: @@ -72,4 +76,4 @@ https:///external-entry?target=private-room `psid` 可以与任意 `target` 或聊天促销参数组合使用。参数值需要进行 URL 编码,不要在入口中传递登录 Token、Page Access Token 或 App Secret。 -测试环境和正式环境的完整可点击示例见 [外部入口链接清单](./external-entry-links.md)。 +测试环境和正式环境的完整可点击示例见 [外部入口链接清单](./links.md)。 diff --git a/docs/external-entry-links.md b/docs/external-entry/links.md similarity index 97% rename from docs/external-entry-links.md rename to docs/external-entry/links.md index f2f21016..a3759c1a 100644 --- a/docs/external-entry-links.md +++ b/docs/external-entry/links.md @@ -1,5 +1,7 @@ # 外部入口链接清单 +[返回外部入口接入说明](./README.md) + 以下链接可以直接点击打开。PSID 示例统一使用 `27511427698460020`。 ## 测试环境 diff --git a/docs/external-entry/psid-login-flow.md b/docs/external-entry/psid-login-flow.md new file mode 100644 index 00000000..bfd80383 --- /dev/null +++ b/docs/external-entry/psid-login-flow.md @@ -0,0 +1,29 @@ +# PSID 与登录状态流程 + +[返回外部入口接入说明](./README.md) + +通过 `/external-entry` 携带 PSID 进入应用时,按照以下流程保存身份信息并决定是否调用 Facebook Identity 绑定接口。 + +```mermaid +flowchart TD + A["外部链接进入 /external-entry"] --> B{"是否携带有效 PSID?"} + B -- "是" --> C["将 PSID 保存到本地存储"] + B -- "否" --> D["跳过 PSID 保存"] + C --> E["等待 Auth 状态初始化完成"] + D --> E + E --> F{"是否为正式登录用户?"} + F -- "否:Guest 或未登录" --> G["不调用绑定接口"] + F -- "是:Email / Google / Facebook" --> H{"是否存在有效 PSID?"} + H -- "否" --> G + H -- "是" --> I["派发 Facebook Identity 绑定请求"] + I --> J["调用绑定接口"] + I --> K["立即跳转到 target 页面"] + J --> L{"绑定结果"} + L -- "成功" --> M["绑定完成"] + L -- "失败" --> N["记录警告并保留原登录状态"] + G --> K + M --> O["不影响当前页面"] + N --> O +``` + +绑定请求不会阻塞目标页面跳转。通过外部入口进入时如果是 Guest 或未登录状态,本次入口不会调用绑定接口,之后登录也不会自动补调本次绑定。