0

我正在使用 Disqus API 来获取登录用户的详细信息。我不确定如何传递当前登录的用户。

我同时拥有 api_key(public) 和 remote_auth,并且我正在使用 Jquery ajax 通过 http 发送 api 请求。

如果我做这样的事情,

https://disqus.com/api/3.0/users/details.json?api_key=[apikey]

它说“您必须提供用户或验证用户”。现在我有登录用户remote_auth。

仅供参考:这就是我创建 remote_auth 的方式。示例用户 ID:3096795,电子邮件 =“a@a.com”,名称 =“测试”。现在,当该用户登录网站时,它也登录了 Disqus。我可以在http://disqus.com/api/sso/users/中看到这个用户,id = 3096795。

我有几个问题:

1) 我可以使用 jquery ajax 发送经过身份验证的用户并获取用户详细信息吗?或者这只能通过服务器端完成?(Java/PHP)

2)如果我将 ?remote_auth=[remote_auth] 作为查询字符串传递,它会起作用吗?

3) 如果是,remote_auth 值在 HMAC->SHA1(secret_key, message + ' ' + timestamp) 之间有空格,那么我如何将它作为查询字符串参数传递?

4)如果不是,那么如何将用户传递给listActivity.json端点?如果我传递了用户 ID,那么它会返回一些其他用户,而不是我创建的用户。

以下请求返回不同的用户。

https://disqus.com/api/3.0/users/details.json?api_key=[apikey]&user=3096795

如何确保我传递的用户 ID 是唯一的,并且尚未被其他 disqus 帐户占用?

我错过了什么吗?

4

2 回答 2

1

Yourremote_auth是一种身份验证形式,就像 一样access_token,因此您希望在请求中将其作为remote_auth=<YOUR_PAYLOAD>.

如果您传递“user=”,则该 ID 必须是 Disqus 用户 ID,它与您的 remote_auth ID 不同。您的 remote_auth 是一种身份验证形式,就像 access_token 一样。但是,请记住,我们为 SSO 用户返回的详细信息不如经过身份验证的 Disqus 用户多。这是因为详细信息由 SSO 站点所有者管理。

要回答您的其他问题:

  1. 您可以使用客户端 API 来获取这些详细信息,但我们建议使用服务器端 API + 缓存结果以避免遇到 API 限制。

  2. 对有效负载进行 URL 编码,这将起作用

于 2013-06-28T00:32:39.713 回答
0

更容易使用https://github.com/anthavio/disquo

    DisqusApplicationKeys keys = new DisqusApplicationKeys("...api_key...", "...secret_key...", "...access_token...");
    DisqusApi disqus = new DisqusApi(keys);

    //SSO is available only to premium accounts
    SsoAuthData ssoauth = new SsoAuthData("custom-12345-id", "Firstname", "Surname");
    //SSO User identity is used to create post
    disqus.posts().create(ssoauth, keys.getApiSecret(), threadId, "Hello world " + new Date(), null);
于 2014-10-15T23:45:54.523 回答