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

时间:2016-01-20 06:24:20

标签: erlang ejabberd mnesia

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

测试:我已评论整个功能并运行oauth,然后使用dump_table检查最新的数据库内容。我刚刚转储的数据库仍然包含最新的令牌。这意味着写入db将由另一个函数控制。

2 个答案:

答案 0 :(得分:0)

这似乎是该操作的正确功能。 oauth密钥写在ejabberd_oauth:associate_access_token中。你确定你的测试是正确的吗?

答案 1 :(得分:0)

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

自定义模块需要命名为为“ejabberd_oauth”,编译新的ejabberd_oauth.beam复制到/ lib / ejabberd- / EBIN / (这将取代默认的ejabberd_oauth.beam)。

所以我的问题的答案是: associate_access_token

以前(引导我解决这个问题)我:

  1. 将原始的ejabberd_oauth.erl重命名为新名称,编译和 运行。
  2. 未卸载默认的 ejabberd_oauth 模块。所以 这个我认为我的ejabberd服务器有两个验证模块 并混淆了服务器。
  3. 将ejabberd.yml配置为“/ oauth:my_custom_ejabberd_oauth”