我有一个SSO工作的SSO,以便我的经过身份验证的用户可以自动发布到我的Disqus论坛,无需单独的身份验证。但是,我找不到通过服务器端API调用将我的SSO用户列入白名单的方法。似乎我的SSO用户在任何与用户无关的API调用中都无法识别。
我尝试使用whitelists/add
和user=[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找到方法来实现它。
有没有人有这个工作?
答案 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