Meerkat
Meerkat

Reputation: 47

Disqus - How to pass current logged in user?

I am using Disqus API to fetch details of the logged in user. I am not sure how to pass the current logged in user.

I have both api_key(public) and remote_auth and I am using Jquery ajax to send api request over http.

If I do something like this,

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

It says "You must either provide a user or authenticate the user." Now I have the loggedin users remote_auth.

FYI: This is how I am creating the remote_auth. Example User Id: 3096795, email = "[email protected]", Name="Test". Now when this user logs in to the website, it logs in to Disqus as well. I can see this user in http://disqus.com/api/sso/users/ with id = 3096795.

I have couple of questions:

1) Can I use jquery ajax to send a authenticated user and get user details? Or this can be done only via Server side? (Java/Php)

2) If I pass ?remote_auth=[remote_auth] as a query string, will it work?

3) if yes, remote_auth value has spaces in between HMAC->SHA1(secret_key, message + ' ' + timestamp) so how can I pass it as query string parameter?

4) If no, then how to pass a user to the listActivity.json endpoint? If I am passing the userid, then it returns me some other user and not the user I created.

The below request returns a different user.

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

How can I ensure the userid I am passing is unique and not already taken by a different disqus account?

Am I missing something?

Upvotes: 0

Views: 1946

Answers (2)

anthavio
anthavio

Reputation: 2878

Easier using 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);

Upvotes: 0

Ryan V
Ryan V

Reputation: 3100

Your remote_auth is a form of authentication, just like access_token, so you'll want to pass that in your request as remote_auth=<YOUR_PAYLOAD>.

If you pass "user=" that ID would have to be the Disqus user ID, which isn't the same as your remote_auth ID. Your remote_auth is a form of authentication, just like the access_token. However, keep in mind that we don't return as many details for SSO users as authenticated Disqus users. This is because the details are managed by you, the SSO site owner.

To answer your other questions:

  1. You can use the client-side API to get these details, but we recommend the server-side API + caching the results to avoid bumping into API limits.

  2. URL-encode the payload and this will work

Upvotes: 1

Related Questions