No commit activity in last 3 years
No release in over 3 years
PayPal Permissions Service API strategy for OmniAuth
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0
~> 2.14

Runtime

 Project Readme

OmniAuth PayPal Permissions

Note: This gem is designed to work with OmniAuth 1.0 library.

This gem contains the PayPal permissions service strategy for OmniAuth.

Installing

Add to your Gemfile:

gem "omniauth-paypal-permissions"

Then bundle install.

Usage

Here's a quick example, adding the middleware to a Rails app in config/initializers/omniauth.rb.

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :paypal_permissions, {
      :mode      => "sandbox",  # Set "live" for production
      :app_id    => "APP-80W284485P519543T",
      :username  => "jb-us-seller_api1.paypal.com",
      :password  => "WX4WTU3S8MY44S7F",
      :signature => "AFcWxV21C7fd0v3bYYYRCpSSRl31A7yDhhsPUU2XhtMoZXsWHFxu-RWy"
    }, scope: ["ACCESS_BASIC_PERSONAL_DATA","TRANSACTION_SEARCH"]
end

Attributes and Scopes

PayPal permissions service information can be found on https://developer.paypal.com/docs/classic/permissions-service/ht_permissions-invoice/

The possible attributes to be returned at the moment are:

info['display_name']
info['email']
info['first_name']
info['last_name']
info['full_name']
info['company_name']

The "ACCESS_BASIC_PERSONAL_DATA" scope must be set for this to work.

Using Credentials

Within the OmniAuth auth hash, token and token_secret are set within the credentials hash. For example, in the callback, you could use this to fetch the user's information:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController
  def paypalpermissions
    @credentials = env["omniauth.auth"].credentials
    @paypal_config = {
      :mode      => "sandbox",  # Set "live" for production
      :app_id    => "APP-80W284485P519543T",
      :username  => "jb-us-seller_api1.paypal.com",
      :password  => "WX4WTU3S8MY44S7F",
      :signature => "AFcWxV21C7fd0v3bYYYRCpSSRl31A7yDhhsPUU2XhtMoZXsWHFxu-RWy"
    }
    @api = ::PayPal::SDK::Permissions::API.new(@paypal_config.merge({
      :token => @credentials.token,
      :token_secret => @credentials.token_secret
    }))
    response = @api.get_basic_personal_data({
        :attributeList => {
          :attribute => [ "http://axschema.org/namePerson/first",
                          "http://axschema.org/namePerson/last",
                          "http://schema.openid.net/contact/fullname",
                          "http://axschema.org/company/name",
                          "http://axschema.org/contact/email",
                          "https://www.paypal.com/webapps/auth/schema/payerID" ] } })
    if response.success?
      # YAY! User data!
    else
      # BOO :(
    end
  end
end

License

This code is open-sourced under the Apache License, a copy of which is available in the LICENSE file.