Single sign on 如何在DISKS中查找SSO用户?

Single sign on 如何在DISKS中查找SSO用户?,single-sign-on,disqus,Single Sign On,Disqus,我让SSO在Disqs中工作,这样我的经过身份验证的用户可以自动发布到我的Disqs论坛,而无需单独的身份验证。但是,我无法找到通过服务器端API调用将SSO用户列入白名单的方法。似乎在对API的任何与用户相关的调用中都无法识别我的SSO用户 我尝试使用user=[userid]和email=[email]调用白名单/add,传递我设置SSO用户所使用的确切userid和email。用户ID不会返回任何错误,但不会执行任何操作。传递电子邮件会抛出一个错误 我已尝试通过用户/详细信息API通过以下

我让SSO在Disqs中工作,这样我的经过身份验证的用户可以自动发布到我的Disqs论坛,而无需单独的身份验证。但是,我无法找到通过服务器端API调用将SSO用户列入白名单的方法。似乎在对API的任何与用户相关的调用中都无法识别我的SSO用户

我尝试使用user=[userid]和email=[email]调用白名单/add,传递我设置SSO用户所使用的确切userid和email。用户ID不会返回任何错误,但不会执行任何操作。传递电子邮件会抛出一个错误

我已尝试通过用户/详细信息API通过以下方式查找我的SSO用户的Disqs用户id或用户名:

不走运

对/listUsers和/users/detail的API调用根本不列出我的sso用户,因此我无法以这种方式检索他们的用户句柄

令人沮丧的是,我可以在这里的UI控制台中看到用户: 对于域名而不是论坛,所以我知道这个数据是存在的。但我找不到通过API实现它的方法


有人用这个吗

就Disqs API而言,SSO用户的用户ID和用户名是由Disqs分配的,而不是站点。它们在整个Disqs网络中都是独一无二的,即使它们仅在您的站点上是本地的

但是,如果您有自己的本地用户ID,则可以使用API反向查找Disqs用户名。模式是{sso\u slug}-{user\u id\u md5}

假设您的SSO远程域slug是一个示例,您可以在python中检索类似以下内容的disqs用户名:

import hashlib

def get_disqus_username(user_id):
    m = hashlib.md5(user_id)
    hashed_id = m.hexdigest()
    return 'example-' + str(hashed_id)
现在,您可以进行如下API请求:


得到https://disqus.com/api/3.0/users/details.json?api_key=YOUR_PUBLIC_KEY&user=username:DISQUS_USERNAME

我得到了白名单,以便使用您的呼叫检索到的用户ID。注二:1。无法在用户查找中对用户参数进行url编码,或者调用失败,尽管编码是querystring参数的正确格式;2.白名单添加和删除的api文档表示“user”参数接受列表对象。不确定实际支持的列表语法是什么,或者这是否是一个bug-我只能在白名单调用中获得一个用户ID。1您应该能够对实际用户名进行URL编码,但不能对用户名:部分进行URL编码。2支持多个值,但如下所示:?user=…&user=。。。
import hashlib

def get_disqus_username(user_id):
    m = hashlib.md5(user_id)
    hashed_id = m.hexdigest()
    return 'example-' + str(hashed_id)