如何在Disqus中查找SSO用户?

时间:2014-10-06 21:33:57

标签: single-sign-on disqus

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

我尝试使用whitelists/adduser=[userid]同时调用email=[email],并传递用户设置SSO用户的确切用户ID和电子邮件。用户标识不会返回任何错误,但它什么都不做。传递电子邮件会引发错误。

我尝试通过users/detail API为我的SSO用户找到Disqus用户ID或用户名:

   user=myuserid (the same id used for SSO)
   email=myuser@email.com  (the same email used for SSO)
   user=remote:forumshortname-myuserid
   user:username=forumshortname-myuserid

没有运气。

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

令人沮丧的是,我可以在这里看到UI控制台中的用户: https://disqus.com/api/sso/users/ 对于域(而不是论坛),所以我知道这些数据存在。但我无法通过API找到方法来实现它。

有没有人有这个工作?

1 个答案:

答案 0 :(得分:2)

就Disqus API而言,SSO用户的用户ID和用户名是由Disqus而非网站分配的用户ID和用户名。它们在Disqus网络中是独一无二的,即使它们仅在您的网站本地。

但是,如果您拥有自己的本地用户ID,则可以反向查找Disqus用户名,以便使用API​​。模式为{sso_slug}-{user_id_md5}

假设您的SSO远程域名slug是example,您可以在python中检索这样的Disqus用户名:

import hashlib

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

现在您可以像这样发出API请求:

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