Erlang 在ejabberd_oauth.erl中将oauth信息(令牌、用户等)写入mnesia的功能/模块是什么?

Erlang 在ejabberd_oauth.erl中将oauth信息(令牌、用户等)写入mnesia的功能/模块是什么?,erlang,ejabberd,mnesia,Erlang,Ejabberd,Mnesia,我试图理解ejabberd_oauth.erl是如何实现oauth的。在ejabberd_oauth.erl中,有一个函数名关联访问令牌——这就是mnesia:dirty_write(R)所在的位置。根据我的理解,mnesia:dirty_write(R)应该将记录写入数据库,但在完成测试后我完全错了 测试:我已经对整个函数进行了注释,并运行了oauth,然后转储表以检查最新的DB内容。我刚刚转储的DB仍然包含最新的令牌。这意味着对数据库的写入由另一个函数控制 这似乎是该操作的正确功能。oaut

我试图理解ejabberd_oauth.erl是如何实现oauth的。在ejabberd_oauth.erl中,有一个函数名关联访问令牌——这就是mnesia:dirty_write(R)所在的位置。根据我的理解,mnesia:dirty_write(R)应该将记录写入数据库,但在完成测试后我完全错了


测试:我已经对整个函数进行了注释,并运行了oauth,然后转储表以检查最新的DB内容。我刚刚转储的DB仍然包含最新的令牌。这意味着对数据库的写入由另一个函数控制

这似乎是该操作的正确功能。oauth密钥写入
ejabberd\u oauth:associate\u access\u token
。您确定您的测试正确吗?

我终于找到了解决问题的快速方法:

自定义模块需要​命名​ 作为“ejabberd_oauth”,编译​复制​ 将新的ejabberd_oauth.beam转换为/lib/ejabberd-/ebin/ (这将替换默认的ejabberd_oauth.beam)

所以我的问题的答案是:关联访问令牌

在此之前(这导致了我的问题)我:

  • 将原来的ejabberd_oauth.erl重命名为新名称,编译并 运行它
  • 没有卸载默认的ejabberd_oauth模块。所以 我认为这使得我的ejabberd服务器有两个身份验证模块 把服务器弄糊涂了
  • 将ejabberd.yml配置为“/oauth:my_custom_ejabberd_oauth”

  • 我对我的考试完全有把握。我甚至将mnesia:dirty_write(R)重命名为类似于mnesia:dirtysz_write(R)。我的测试证明,associate_access_token甚至没有检测/检查mnesia:dirty_write(R)的语法错误。你能帮我给点别的提示吗?