Skip to content

Commit d886f47

Browse files
feat(oauth-apple): support Sign in with Apple as a documented OmniAuth provider (#1347)
1 parent d6af2a1 commit d886f47

14 files changed

+18
-4
lines changed

Gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ group :development, :test do
2121
gem 'omniauth-facebook'
2222
gem 'omniauth-github'
2323
gem 'omniauth-google-oauth2'
24+
gem 'omniauth-apple'
2425
gem 'rack-cors'
2526
gem 'thor'
2627

devise_token_auth.gemspec

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ Gem::Specification.new do |s|
2323
s.required_ruby_version = ">= 2.2.0"
2424

2525
s.add_dependency 'rails', '>= 4.2.0', '< 6.1'
26+
s.add_dependency 'sprockets', '3.7.2' # FIXME: breaking changes in 4.0.0
2627
s.add_dependency 'devise', '> 3.5.2', '< 5'
2728
s.add_dependency 'bcrypt', '~> 3.0'
2829

2930
s.add_development_dependency 'appraisal'
30-
s.add_development_dependency 'sqlite3', '~> 1.3.6'
31+
s.add_development_dependency 'sqlite3', '~> 1.4'
3132
s.add_development_dependency 'pg'
3233
s.add_development_dependency 'mysql2'
3334
s.add_development_dependency 'mongoid', '>= 4', '< 8'

docs/config/omniauth.md

+4-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44

55
If you wish to use omniauth authentication, add all of your desired authentication provider gems to your `Gemfile`.
66

7-
**OmniAuth example using github, facebook, and google**:
7+
**OmniAuth example using GitHub, Facebook, Google, and Apple**:
88
~~~ruby
99
gem 'omniauth-github'
1010
gem 'omniauth-facebook'
1111
gem 'omniauth-google-oauth2'
12+
gem 'omniauth-apple'
1213
~~~
1314

1415
Then run `bundle install`.
@@ -21,13 +22,14 @@ In `config/initializers/omniauth.rb`, add the settings for each of your provider
2122

2223
These settings must be obtained from the providers themselves.
2324

24-
**Example using github, facebook, and google**:
25+
**Example using Github, Facebook, Google, and Apple**:
2526
~~~ruby
2627
# config/initializers/omniauth.rb
2728
Rails.application.config.middleware.use OmniAuth::Builder do
2829
provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], scope: 'email,profile'
2930
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']
3031
provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET']
32+
provider :apple, ENV['APPLE_CLIENT_ID'], '', { scope: 'email name', team_id: ENV['APPLE_TEAM_ID'], key_id: ENV['APPLE_KEY'], pem: ENV['APPLE_PEM'] }
3133
end
3234
~~~
3335

gemfiles/rails_4_2.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ group :development, :test do
1313
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1414
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1515
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
16+
gem 'omniauth-apple'
1617
gem "rack-cors", require: "rack/cors"
1718
gem "thor"
1819
gem "database_cleaner"

gemfiles/rails_4_2_mongoid_5.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ group :development, :test do
1212
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1313
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1414
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
15+
gem 'omniauth-apple'
1516
gem "rack-cors", require: "rack/cors"
1617
gem "thor"
1718
gem "database_cleaner"

gemfiles/rails_5_0.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ group :development, :test do
1313
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1414
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1515
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
16+
gem 'omniauth-apple'
1617
gem "rack-cors", require: "rack/cors"
1718
gem "thor"
1819
gem "database_cleaner"

gemfiles/rails_5_1.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ group :development, :test do
1313
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1414
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1515
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
16+
gem 'omniauth-apple'
1617
gem "rack-cors", require: "rack/cors"
1718
gem "thor"
1819
gem "database_cleaner"

gemfiles/rails_5_1_mongoid_6.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ group :development, :test do
1212
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1313
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1414
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
15+
gem 'omniauth-apple'
1516
gem "rack-cors", require: "rack/cors"
1617
gem "thor"
1718
gem "database_cleaner"

gemfiles/rails_5_1_mongoid_7.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ group :development, :test do
1212
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1313
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1414
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
15+
gem 'omniauth-apple'
1516
gem "rack-cors", require: "rack/cors"
1617
gem "thor"
1718
gem "database_cleaner"

gemfiles/rails_5_2.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ group :development, :test do
1313
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1414
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1515
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
16+
gem 'omniauth-apple'
1617
gem "rack-cors", require: "rack/cors"
1718
gem "thor"
1819
gem "database_cleaner"

gemfiles/rails_5_2_mongoid_6.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ group :development, :test do
1212
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1313
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1414
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
15+
gem 'omniauth-apple'
1516
gem "rack-cors", require: "rack/cors"
1617
gem "thor"
1718
gem "database_cleaner"

gemfiles/rails_5_2_mongoid_7.gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ group :development, :test do
1212
gem "omniauth-facebook", git: "https://github.com/mkdynamic/omniauth-facebook"
1313
gem "omniauth-github", git: "https://github.com/intridea/omniauth-github"
1414
gem "omniauth-google-oauth2", git: "https://github.com/zquestz/omniauth-google-oauth2"
15+
gem 'omniauth-apple'
1516
gem "rack-cors", require: "rack/cors"
1617
gem "thor"
1718
gem "database_cleaner"
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# frozen_string_literal: true
22

3-
#Figaro.require("GITHUB_KEY", "GITHUB_SECRET", "FACEBOOK_KEY", "FACEBOOK_SECRET", "GOOGLE_KEY", "GOOGLE_SECRET")
3+
#Figaro.require("GITHUB_KEY", "GITHUB_SECRET", "FACEBOOK_KEY", "FACEBOOK_SECRET", "GOOGLE_KEY", "GOOGLE_SECRET", "APPLE_CLIENT_ID", "APPLE_TEAM_ID", "APPLE_KEY", "APPLE_PEM")

test/dummy/config/initializers/omniauth.rb

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], scope: 'email,profile'
55
provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']
66
provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET']
7+
provider :apple, ENV['APPLE_CLIENT_ID'], '', { scope: 'email name', team_id: ENV['APPLE_TEAM_ID'], key_id: ENV['APPLE_KEY'], pem: ENV['APPLE_PEM'] }
78
provider :developer,
89
fields: [:first_name, :last_name],
910
uid_field: :last_name

0 commit comments

Comments
 (0)