oca
1
您好,
我想将来自另一个应用程序的电子邮件地址列表中的用户进行匹配,以便将所有用户添加到一个组中,并移除不在列表中的成员。我有一个通过 API 完成此操作的脚本。
移除部分很简单。对于每个成员,我使用以下命令提取他们所有的电子邮件:
get(/u/{username}/emails.json)
然后我尝试将它们与列表中的每一项进行匹配。如果没有匹配项,则排除该成员。
包含部分比较棘手。对于每个电子邮件地址,我想查看是否有用户拥有该地址。如果有,我将其添加到组中。如果没有,我不想发送邀请。我使用的是以下命令:
get(/admin/users/list/all.json?email={email})
但是此命令返回的是以该地址为主地址的用户列表,而不是拥有该地址作为次要地址、未确认电子邮件或关联账户的用户。是否有办法从所有可能的电子邮件地址进行筛选,还是我应该导出所有用户列表并在外部手动完成?我更倾向于在内部完成,这样可以降低数据泄露的风险。
谢谢!
oca
3
谢谢。
我使用此插件和以下查询完成了此操作:
--[params]
-- string :q_email
SELECT u.username FROM users u JOIN user_emails e ON u.id=e.user_id WHERE e.email = :q_email
并使用以下 Python 脚本调用它:
import pydiscourse
client = DiscourseClient('https://forum.com', api_username='system', api_key='1234')
params = '{\"q_email\":\"' + str(email) + '\"}'
response = client._request('POST', '/admin/plugins/explorer/queries/{number}/run', params={\"params\":params}) # 是的,有 3 个参数,每个参数代表不同的东西。良好的黑客实践!
username=response["rows"]
1 个赞
system
(system)
关闭
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.