Project

evri_rpx

0.01
No commit activity in last 3 years
No release in over 3 years
An API wrapper for the RPXNow.com login service.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

evri_rpx

The evri_rpx library provides an wrapper around RPXNow's universal sign-on API. To learn more about this API, you can read up at https://rpxnow.com/docs

Sign-on Screen

Features

  • Clean and simple API design
  • Full SSL certificate validation
  • Implements all RPX API calls, including ones available at the Pro level
  • 100% spec coverage
  • Clear documentation (and if not, let me know!)

TODO

  • Rails helper methods for building up the iframe/popup widget code.

Usage/Install

Examples

Here are examples of the features in evri_rpx. As well, you can browse the RDocs here: http://rdoc.info/projects/dbalatero/evri_rpx

All interaction with the API goes through the public methods in Evri::RPX::Session, which often return complex objects. See RDocs for all the methods available on these objects.

To see examples of raw JSON responses from RPX, see http://github.com/dbalatero/evri_rpx/tree/master/spec/fixtures

Validating tokens in your Rails app

class RPXController < ApplicationController
  def process_token
    if params[:token].blank?
      flash[:notice] = 'You cancelled RPX login.'
      redirect_to root_url
      return
    end

    # Returns a User object.
    @user = rpx.auth_info(params[:token])

    # rest of your logic here
  end

  private
  def rpx
    @rpx ||= Evri::RPX::Session.new('myapikey')
  end
end

Mapping your local user's primary keys to third-party providers

class RPXController < ApplicationController
  def process_token
    # Returns a User object.
    @user = rpx.auth_info(params[:token])

    # Get the corresponding user out of the database for a 
    # given email.
    @user_in_mysql = User.find_by_email(@user.email)

    # Map this user's local primary key to the 3rd-party provider
    rpx.map(@user, @user_in_mysql.id)
  end

  private
  def rpx
    @rpx ||= Evri::RPX::Session.new('myapikey')
  end
end

Authenticating already mapped users

class RPXController < ApplicationController
  def process_token
    # Returns a User object.
    @rpx_user = rpx.auth_info(params[:token])

    @user = User.find(:first, :conditions => ['id = ?', @rpx_user.identifier])
    if @user
      # log them in
      self.current_user = @user
    end
  end

  private
  def rpx
    @rpx ||= Evri::RPX::Session.new('myapikey')
  end
end

Retrieving mappings for a given user's primary key

user = User.find_by_email('foo@bar.com')
rpx = Evri::RPX::Session.new('myapikey')
mappings = rpx.mappings(user.id)

Retrieving all mappings for your application

rpx = Evri::RPX::Session.new('myapikey')
all_mappings = rpx.all_mappings

all_mappings.each do |identifier, mappings|
  puts "#{identifier} has the following mappings: " <<
       mappings.join(', ')
end

Unmapping a user's primary key and 3rd-party identifier

user = User.find(50)

rpx = Evri::RPX::Session.new('myapikey')
rpx.unmap('http://brian.myopenid.com/', user.id)

Retrieving contact lists for users (requires RPX Pro)

rpx = Evri::RPX::Session.new('myapikey')

# Without a User object, requires primary key.
user = User.find(50)
contact_list = rpx.get_contacts(user.id)

# With a user object that is mapped already
user = rpx.auth_info(params[:token])
contact_list = rpx.get_contacts(user)

provider? methods for Users

user = rpx.auth_info(params[:token])

if user.twitter?
  # post an article to twitter via the API
elsif user.facebook?
  # post an article to facebook via FB connect
end

Setting a Twitter/Facebook/MySpace status (Plus/Pro)

user = rpx.auth_info(params[:token])
rpx.set_status(user, 'My new status message.')

Copyright

Copyright (c) 2009 Evri, Inc. Authored by David Balatero . See LICENSE for details.