@fish-under-sea/magpie-neartoken 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -54,6 +54,23 @@
|
|
|
54
54
|
|
|
55
55
|
`package.json` 必须原样声明这张表:magpie 按它放行,宿主再按同一份声明校验一次。
|
|
56
56
|
|
|
57
|
+
## 和 dsh-neartoken 的关系:只共用站点,不混用标识
|
|
58
|
+
|
|
59
|
+
这不是 dsh-neartoken 的兼容层,也没有复用它的代码、配置或令牌。两边的连接方式不一样:
|
|
60
|
+
|
|
61
|
+
| | dsh-neartoken | 本插件 |
|
|
62
|
+
| --- | --- | --- |
|
|
63
|
+
| 宿主 | DSH | magpie |
|
|
64
|
+
| 请求由谁发 | DSH Host | magpie 本体(`/api/plugin-pages/call`) |
|
|
65
|
+
| 站点确认页上的称呼 | `DSH 插件` | `magpie` |
|
|
66
|
+
| 请求的 UA | DSH 自己的 | `magpie-neartoken` |
|
|
67
|
+
| 令牌 | 站点写的 `DSH` | 站点按 `magpie` 写 |
|
|
68
|
+
| 供应商 | DSH 的 `neartoken` provider | magpie 的 `neartoken` 供应商 |
|
|
69
|
+
|
|
70
|
+
共用的只有站点已经实现的那批设备授权端点(`/api/dsh/device/authorize`、`/token`、`/revoke`)与钱包、用量、充值端点——那是站点自己的接口,不是哪一家的实现。作者的 `DSH` 标识原样留着:他的令牌、日志和授权记录仍然只认 `DSH`,我们的连接写 `magpie`,两边在站点后台一眼分得开。
|
|
71
|
+
|
|
72
|
+
站点对「只有 DSH 授权签发的钥匙能充值」这件事回的是 `DSH_TOKEN_REQUIRED`,那是站点的历史码;插件只按它分支,对外一律说「这把密钥不是本插件登录签发的」。
|
|
73
|
+
|
|
57
74
|
## 页面怎么用
|
|
58
75
|
|
|
59
76
|
1. 装上包,侧边栏「插件」→「NearToken」。
|
|
@@ -62,6 +79,17 @@
|
|
|
62
79
|
4. 批准后自动接入:余额、代金券、看板、充值一次到齐;模型同时出现在 magpie 的供应商页。
|
|
63
80
|
5. 断开连接会撤销站点上这把密钥,并删掉 magpie 里这一条供应商。
|
|
64
81
|
|
|
82
|
+
## 排错
|
|
83
|
+
|
|
84
|
+
| 画面 / 报错 | 原因 | 怎么办 |
|
|
85
|
+
| --- | --- | --- |
|
|
86
|
+
| `NearToken doesn't ask for neartoken:state` | 宿主补丁的 `PageCalls` 里没有这八条。只写在 `package.json` 里会被 `callsKeeping` 静默丢掉,窗口那边就只剩一句「没问过」 | 重新打 `patches/magpie-neartoken.patch`(0.1.4 起含 `internal/plugin/page.go` 的改动),再重启 magpie |
|
|
87
|
+
| 「这个 magpie 还没有插件页的调用通道」 | 官方原版 magpie,没有插件页调用通道 | 同上,需要带通道的构建 |
|
|
88
|
+
| 插件列表里是灰书页 / 没有图标 | 包里的 `page/icon.png` 没装到 | 用 npm 装或 release 的 tgz,别只拷 `page/index.html` |
|
|
89
|
+
| 页面空白,10 秒后变成「停止工作」 | 页面没应答 hello | 确认 magpie 版本,或看窗口日志 |
|
|
90
|
+
|
|
91
|
+
自证一遍(不用开窗口):`magpie web` 会打印带一次性 key 的链接;用它换 cookie 后请求 `/api/plugin-pages`,那个页面的 `calls` 里应当有八条 `neartoken:*`。
|
|
92
|
+
|
|
65
93
|
## 仓库结构
|
|
66
94
|
|
|
67
95
|
仓库根就是那个 npm 包(`package.json` 在根,`npm pack` 直接可用);宿主的源码与脚本在旁边的目录里,不进包。
|
|
@@ -79,16 +107,19 @@
|
|
|
79
107
|
|
|
80
108
|
## 自己给 magpie 加通道
|
|
81
109
|
|
|
82
|
-
前提:magpie 源码已经是 `v0.1.2732` + FISH 的 `magpie-v0.1.2732+fish.9.patch
|
|
110
|
+
前提:magpie 源码已经是 `v0.1.2732` + FISH 的 `magpie-v0.1.2732+fish.9.patch`(那一版已经带了插件页调用通道),本仓库的补丁只往上再叠三件事:
|
|
83
111
|
|
|
84
112
|
1. `internal/neartoken`:设备授权、钱包、用量、充值、目录,以及把站点挂成供应商;
|
|
85
|
-
2. `internal/
|
|
113
|
+
2. `internal/plugin/page.go` 的 `PageCalls`:补上 `neartoken:*` 八条——**两处都要列**,只写在 `package.json` 里会被 `callsKeeping` 静默丢掉,页面只会看到「NearToken doesn't ask for neartoken:state」;
|
|
114
|
+
3. `internal/gui/pluginpagecall.go` 里多一条 `neartoken:` 前缀的分派。
|
|
86
115
|
|
|
87
116
|
```powershell
|
|
88
117
|
git -C ..\upstream-2732 apply patches\magpie-neartoken.patch
|
|
89
118
|
pwsh -File tools\build.ps1 -Upstream ..\upstream-2732 -Out dist\magpie.exe
|
|
90
119
|
```
|
|
91
120
|
|
|
121
|
+
打完之后可以自证一遍:`magpie web` 打印的链接带一次性 key,用它换 cookie 后请求 `/api/plugin-pages`,那个页面的 `calls` 里应当有八条 `neartoken:*`;`POST /api/plugin-pages/call` 带 `{"name":"neartoken:state"}` 应当回 `configured:false`。
|
|
122
|
+
|
|
92
123
|
`internal/neartoken` 的测试用 `httptest` 起一个假站点,不碰网络:
|
|
93
124
|
|
|
94
125
|
```powershell
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fish-under-sea/magpie-neartoken",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "NearToken for magpie: sign in to neartoken.cc from a page of magpie's own window, see the balance, vouchers and spending, top up without leaving it, and let magpie pick the models as it does for any provider.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|