You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NM 1.0无错误时如何传递NM.SecretAgentOldGetSecretsFunc第4参数?

解决PyGObject中NM.SecretAgentOld回调传None触发类型错误的问题

问题根源

PyGObject对NM.SecretAgentOldGetSecretsFunc的类型绑定有严格校验,无错误场景下传入None作为GLib.Error参数时,会触发类型不匹配错误,官方示例也存在该问题。

解决方案

无错误时不要传None,而是创建一个空的GLib.Error实例(错误码为0、错误信息为空)传递给回调函数,绕过类型检查同时符合NetworkManager的无错误要求。

代码示例

from gi.repository import NM, GLib

class CustomSecretAgent(NM.SecretAgentOld):
    def do_get_secrets(self, connection, setting_name, hints, flags, callback, user_data):
        # 示例:获取到的密码信息
        secrets = {
            setting_name: {
                "psk": "your_network_password"
            }
        }
        
        # 创建无错误的Error实例
        no_error = GLib.Error.new_literal(GLib.quark_from_string(""), 0, "")
        # 调用回调,传入结果和空错误
        callback(connection, secrets, no_error, user_data)

补充说明

  • 错误码0是NetworkManager认可的“无错误”标识,空错误信息不会干扰正常流程。
  • 如果上述方式仍有问题,可直接使用默认构造函数创建空Error实例:no_error = GLib.Error()

内容的提问来源于stack exchange,提问作者Abir Halder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 00:57:43