• Stars
    star
    213
  • Rank 185,410 (Top 4 %)
  • Language
    Ruby
  • License
    BSD 3-Clause "New...
  • Created almost 14 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Building block for spree social networking features (provides authentication and account linkage)

Spree Social

Build Status Code Climate Reviewed by Hound

Core for all social media related functionality for Spree. The Spree Social gem handles authorization, account creation and association through social media sources such as Twitter and Facebook. This gem is beta at best and should be treated as such. Features and code base will change rapidly as this is under active development. Use with caution.


Setup for Production

  1. Add this extension to your Gemfile with this line:

Spree >= 3.1

gem 'spree_social', github: 'spree-contrib/spree_social'

Spree 3.0 and Spree 2.x

gem 'spree_social', github: 'spree-contrib/spree_social', branch: 'X-X-stable'

The branch option is important: it must match the version of Spree you're using. For example, use 3-0-stable if you're using Spree 3-0-stable or any 3.0.x version.

  1. Install the gem using Bundler:
bundle install
  1. Copy & run migrations
bundle exec rails g spree_social:install
  1. Restart your server

If your server was running, restart it so that it can find the assets properly.

Preference(optional): By default url will be /users/auth/:provider. If you wish to modify the url to: /member/auth/:provider, /profile/auth/:provider, or /auth/:provider then you can do this accordingly in your config/initializers/spree.rb file as described below:

Spree::SocialConfig[:path_prefix] = 'member'  # for /member/auth/:provider
Spree::SocialConfig[:path_prefix] = 'profile' # for /profile/auth/:provider
Spree::SocialConfig[:path_prefix] = ''        # for /auth/:provider

Spree Setup to Utilize OAuth Sources

Login as an admin user and navigate to Configuration > Social Authentication Methods

Click on the New Authentication Method button to enter the key obtained from their respective source, (See below for instructions on setting up the various providers).

Multiple key entries can now be entered based on the rails environment. This allows for portability and the lack of need to check in your key to your repository. You also have the ability to enable and disable sources. These setting will be reflected on the client UI as well.

Alternatively you can ship keys as environment variables and create these Authentication Method records on application boot via an initializer. Below is an example for facebook.

# Ensure our environment is bootstrapped with a facebook connect app
if ActiveRecord::Base.connection.data_source_exists? 'spree_authentication_methods'
  Spree::AuthenticationMethod.where(environment: Rails.env, provider: 'facebook').first_or_create do |auth_method|
    auth_method.api_key = ENV['FACEBOOK_APP_ID']
    auth_method.api_secret = ENV['FACEBOOK_APP_SECRET']
    auth_method.active = true
  end
end

You MUST restart your application after configuring or updating an authentication method.


Setup the Applications at the Respective Sources

OAuth Applications @ Facebook, Twitter, Google and / or Github are supported out of the box but you will need to setup applications are each respective site as follows for public use and for development.

All URLs must be in the form of domain.tld you may add a port as well for development

Facebook

Facebook / Developers / Apps

  1. Name the app what you will and agree to the terms.
  2. Fill out the capcha
  3. Under the Web Site tab
  4. Site URL: http://your_computer.local:3000 for development / http://your-site.com for production
  5. Site domain: your-computer.local / your-site.com respectively

Twitter

Twitter / Application Management / Create an application

  1. Name and Description must be filled in with something
  2. Application Website: http://your_computer.local:3000 for development / http://your-site.com for production
  3. Application Type: Browser
  4. Callback URL: http://your_computer.local:3000 for development / http://your-site.com for production
  5. Default Access Type: Read & Write
  6. Save Application

Github

Github / Applications / Register a new OAuth application

  1. Name The Application
  2. Main URL: http://your_computer.local:3000 for development / http://your-site.com for production
  3. Callback URL: http://your_computer.local:3000 for development / http://your-site.com for production
  4. Click Create

This does not seem to be a listed Github item right now. To View and / or edit your applications goto http://github.com/account/applications

Amazon

Amazon / App Console / Register a new OAuth application

  1. Register New Application
  2. Name the Application, provide description and URL for Privacy Policy
  3. Click Save
  4. Add Your site under Web Settings > Allowed Return URLs (example: http://localhost:3000/users/auth/amazon/callback)

The app console is available at https://login.amazon.com/manageApps

Google OAuth2

Google / APIs / Credentials/ Create Credential

  1. In the APIs and Services dashboard, visit 'Credentials' on the side, then select 'Create Credentials' and 'Oauth client ID'.
  2. Name the Application, select "Web Application" as a type.
  3. Under "Authorized redirect URIs", add your site (example: http://localhost:3000/users/auth/google_oauth2/callback)

More info: https://developers.google.com/identity/protocols/OAuth2

Adding other OAuth sources

It is easy to add any OAuth source, given there is an OmniAuth strategy gem for it (and if not, you can easily write one by yourself. For instance, if you want to add authorization via LinkedIn, the steps will be:

1, Add gem "omniauth-linkedin" to your Gemfile, run bundle install.

2, In an initializer file, e.g. config/initializers/devise.rb, add and init a new provider for SpreeSocial:

Optional: If you want to skip the sign up phase where the user has to provide an email and a password, add a third parameter to the provider entry and the Spree user will be created directly using the email field in the Auth Hash Schema:

SpreeSocial::OAUTH_PROVIDERS << ['LinkedIn', 'linkedin', 'true']
SpreeSocial.init_provider('linkedin')

3, Activate your provider as usual (via initializer or admin interface).

4, Override spree/users/social view to render OAuth links in preferred way for a new one to be displayed. Or alternatively, include to your CSS a definition for .icon-spree-linkedin-circled and an embedded icon font for LinkedIn from fontello.com (the way existing icons for Facebook, Twitter, etc are implemented). You can also override CSS classes for other providers, .icon-spree-<provider>-circled, to use different font icons or classic background images, without having to override views.


Contributing

See corresponding guidelines.


Copyright (c) 2010-2015 John Dyer and contributors, released under the New BSD License

More Repositories

1

spree_i18n

I18n translation files for Spree Commerce.
Ruby
346
star
2

spree_related_products

Related products extension for Spree Commerce.
Ruby
149
star
3

spree_active_shipping

Spree integration for Shopify's active_shipping gem.
Ruby
135
star
4

spree_multi_vendor

Spree marketplace extension. Create your own marketplace on top of Spree Commerce
Ruby
130
star
5

spree_reviews

Straightforward review/rating functionality.
Ruby
125
star
6

spree_digital

A Spree extension to enable downloadable products
Ruby
116
star
7

better_spree_paypal_express

A better Spree PayPal Express Extension.
Ruby
109
star
8

spree_wishlist

Wishlist extension for Spree Commerce.
Ruby
106
star
9

spree_drop_ship

Spree Drop Shipping Extension
Ruby
102
star
10

spree_address_book

Adds address book for users to Spree
Ruby
94
star
11

spree_print_invoice

Create a PDF invoice for Spree orders.
Ruby
90
star
12

spree_fancy

SpreeFancy is a responsive theme for Spree Commerce.
CSS
86
star
13

spree_marketplace

Turn Spree into a marketplace by extending spree drop ship.
Ruby
77
star
14

spree_store_credits

This Spree extension allows admins to issue arbitrary amounts of store credit to users.
Ruby
70
star
15

spree_blue_theme

Original Spree Blue theme (0.60.x)
Ruby
65
star
16

spree_shared

Multi-tenancy for Spree using Apartment (per tenant databases).
Ruby
61
star
17

spree_rdr_theme

WIP - everything might change.
Ruby
52
star
18

spree_email_to_friend

Email a friend functionality for Spree Commerce.
Ruby
49
star
19

spree_sitemap

Sitemap Generator for Spree Commerce.
Ruby
47
star
20

spree_affiliate

Affiliate support for Spree Commerce.
Ruby
46
star
21

spree_braintree_vzero

Official Braintree + PayPal integration gem for Spree Commerce
Ruby
45
star
22

spree_multi_currency

Provides UI to allow configuring multiple currencies in Spree.
Ruby
41
star
23

spree_contact_us

Adds Contact Us form to your Spree Commerce store
Ruby
40
star
24

spree_product_zoom

Lightbox zoom functionality to show original product image
Ruby
32
star
25

spree_social_products

Add social sharing buttons for your Spree products
Ruby
28
star
26

spree_mail_settings

Mail setting functionality extracted from Spree.
Ruby
28
star
27

spree_slider

Ruby
26
star
28

spree_api_examples

Ruby
26
star
29

spree_globalize

Adds support for model translations (multi-language stores) using Globalize gem
Ruby
24
star
30

spree_simple_dash

Alternative dashboard overview for Spree
Ruby
23
star
31

spree_price_books

Price book functionality for running sales, role based, country based pricing etc...
Ruby
21
star
32

spree_analytics_trackers

Integrate your Spree application with Google Analytics and Segment.com
Ruby
19
star
33

spree_product_groups

Extension to Spree featuring Product Groups that were originally part of core prior to 1.1 release.
Ruby
19
star
34

spree_skrill

Add support for Skrill / MoneyBookers Quick checkout as a payment method.
Ruby
18
star
35

spree_analytics

Ruby
18
star
36

spree_store_credit_payment_method

Adds store credit functionality as a payment method.
Ruby
17
star
37

spree_tax_cloud

US sales tax extension for Spree using the Tax Cloud service.
Ruby
15
star
38

spree_page_cache

Minor tweaks to make Spree pages suitable for page caching
Ruby
15
star
39

spree_blue_sass_theme

spree_blue_theme using sass
Ruby
14
star
40

spree-adyen

Adyen payment gateway integration for Spree.
Ruby
12
star
41

spree_mailchimp_ecommerce

Connect your Spree application to Mailchimp eCommerce API for full email automation
Ruby
12
star
42

spree_shopify_importer

Migrate your Shopify store to Spree
Ruby
9
star
43

spree_handling_fees

Adds Handling Fee functionality to Spree.
Ruby
9
star
44

spree_clean

Admin UI to allow the removal of sample / test data.
Ruby
9
star
45

spree_vouchers

A WIP for Gift Vouchers
Ruby
7
star
46

spree_avatax_official

The new officially certified Spree Avatax (Avalara) extension
Ruby
7
star
47

spree_favorites

Add Spree::Favorite model to track favorite products or anything else you would like.
Ruby
7
star
48

spree_claim_order

Claim guest orders associated with an email address
Ruby
5
star
49

rfcs

A Request for Comments on Spree.
5
star
50

spree_videos

Spree extension to allow linking of youtube reference IDs to products
Ruby
5
star
51

spree_jirafe

Front-end integration for Jirafe.
Ruby
5
star
52

spree_usa_epay

Ruby
4
star
53

spree_multicode_promotions

Ruby
2
star
54

spree_jmeter

Contains https://github.com/flood-io/ruby-jmeter scripts for benchmarking & load testing Spree.
Ruby
1
star
55

spree_automation_interfaces

Ruby
1
star
56

spree_legacy_return_authorizations

Spree 2.3.x Legacy Returns
Ruby
1
star