Viki Disqus Gem
This is a gem used by the Viki web application for integrating Disqus Single Sign-On (SSO). Users who log in to Viki can post comments on Disqus using the same Viki account, without the need for another login.
Installation
Add this line to your application's Gemfile:
gem 'viki_disqus'
And then execute:
$ bundle
Or install it yourself as:
$ gem install viki_disqus
Usage
NOTE: You will have to read http://help.disqus.com/customer/portal/articles/236206-integrating-single-sign-on for setup instructions on the Disqus end.
You need to set these 2 environment variables to appropriate values:
- DISQUS_SECRET_KEY
- DISQUS_PUBLIC_KEY
They will be used by the VikiDisqus::SSO class. Their values can be accessed through:
- VikiDisqus::SSO::DISQUS_SECRET_KEY
- VikiDisqus::SSO::DISQUS_PUBLIC_KEY
These functions are available publicly:
- VikiDisqus::SSO::remote_auth_s3(optionsHash, timestampNow)
- VikiDisqus::SSO::signature(optionsHash, timestampNow)
- VikiDisqus::SSO::message(optionsHash)
You should make use of the VikiDisqus::SSO::remote_auth_s3 function
(which uses VikiDisqus::SSO::signature and
VikiDisqus::SSO::message internally).
You will need to embed this snippet of JavaScript, according to instructions from Disqus. The template looks like:
var disqus_config = function () {
    // The generated payload which authenticates users with Disqus
    this.page.remote_auth_s3 = '<message> <hmac> <timestamp>';
    this.page.api_key = 'public_api_key';
}On the Viki web application, it looks like:
var disqus_config = function () {
  this.page.remote_auth_s3 = '<%= VikiDisqus::SSO.remote_auth_s3(opts, Time.now.to_i) %>';
  this.page.api_key = '<%= VikiDisqus::SSO::DISQUS_PUBLIC_KEY %>';
}Running Tests
bundle exec rspec spec
or
rspec spec