Unlock 会员 NFT 显示但无法访问:核对 Lock、到期、身份与 Hook
链小知 · 进阶 · 核验 · 依官方文档整理
用已有会员记录分开 NFT 所有权、有效期和网站访问条件,定位选错链、角色不同或登录状态缺证。
开始前准备
- 准备已有 Member Keychain/Lock 详情、网络与合约、tokenId、有效期以及去敏网站错误记录。
- 不提供私钥或登录 code/signature;只看已有会话记录,不登录、连接、验证签名或调用合约。
1. 定位同一条链上的会员
从已有 Dashboard 的 Member Keychain 或 Lock 详情,保留网络、Lock 地址、tokenId;用官方网络页核对部署范围。Lock 是独立 ERC721 合约,另一 Lock 的 Key 不能直接替代。
这里的 Key 是会员 NFT。名称、图片和网址标签不足以定位合约,也无需输入私钥或恢复词。
检查结果:会员身份由链+Lock+tokenId确定,未混入其它会员或秘密 key。
2. 把持有数量与有效会员分开
在已有相同版本结果中,对照 ownerOf(tokenId)、totalKeys(address) 和 balanceOf(address)。PublicLock v15 参考将 totalKeys 描述为包含过期,balanceOf 限有效期范围。
显示 NFT 不等于日期仍有效;一次读取失败也不能填成无会员。持有人的结果须绑定同一历史时刻。
检查结果:所有权、全部 Key 与有效数量各有依据。
3. 按 tokenId 核对实际到期
对照已有 keyExpirationTimestampFor(tokenId) 与取得时间;不要将默认 expirationDuration 当成某个旧会员的实际到期。v15 参考说修改默认时长不重算已有 Key 时间。
该方法说明中仍有 owner 的旧措辞,但签名参数是 tokenId;缺正确参数或原结果时标待核,不用地址代填。
检查结果:原 NFT、时间戳与参照时刻对应,默认期限未冒充实际期限。
4. 检查有效性 Hook 与版本
保留原 publicLockVersion、isValidKey(tokenId)/getHasValidKey(address) 及 Hook 配置证据。v14 变更说明称 Hook 对有效性有最终决定权。
Hooks 页有 v12 范围示例,可让其它资格主体获访问;不能仅据日期或网站放行反推该地址实际拥有某 NFT。未知 Hook 不替读者猜规则。
检查结果:NFT 所有权与合约访问判断分列,版本和自定义规则未知可见。
5. 区分登录与管理员权限
在已有登录错误中核对应用域、client_id 与 redirect_uri host 对应;access-denied 表示连接或签消息被拒绝,不是 NFT 被销毁。只记录去敏错误,不保存 code 或签名。
KeyOwner、KeyManager 和 LockManager 不同。网站登录成功不授予 Lock 管理角色,也不能代替会员资格验证。
检查结果:失败位于登录、会员或管理层,角色未由登录状态推断。
6. 输出可复核的访问缺口
按身份不符、日期已过、Hook/版本未知、登录拒绝或网站规则待核分别整理。若只有有效 Key 结果而缺网站回执,结论仅限合约记录。
旧到期 Key 可以续期而不新建 NFT,但本篇不发续期请求。不能为了排错先购买另一个 Lock 的会员。
检查结果:记录包含身份、有效期、规则、角色和缺证,未宣称恢复网站访问。
怎样确认完成
- 能够区分链/Lock/tokenId、所有权、实际有效期、访问规则及登录错误。
- 未知网站策略、Hook和部署版本保留,未实际登录或访问会员内容。
常见错误与边界
- Key 当私钥,NFT 图片当合约身份。
- balanceOf 为0写成 NFT 所有权已消失。
- 登录或 Hook 放行当 NFT 所有权/Lock 管理证明。