OmniAuth::Apple
OmniAuth strategy for Sign In with Apple.
Installation
Add this line to your application's Gemfile:
gem 'omniauth-apple'And then execute:
$ bundle
Or install it yourself as:
$ gem install omniauth-apple
Usage
Rails.application.config.middleware.use OmniAuth::Builder do
provider :apple, ENV['CLIENT_ID'], '',
{
scope: 'email name',
team_id: ENV['TEAM_ID'],
key_id: ENV['KEY_ID'],
pem: ENV['PRIVATE_KEY']
}
endConfiguring "Sign In with Apple"
other Sign In with Apple guides:
Look out for the values you need for your config
- your domain and subdomains, something like:
myapp.com,www.myapp.com - your redirect uri, something like:
https://myapp.com/users/auth/apple/callback(checkrails routesto be sure) - omniauth's "client id" will be Apple's "bundle id", something like:
com.myapp - you will get the "team id" value from Apple when you create your App Id, something like:
H000000B - Apple will give you a
.p8file, which you'll use to GENERATE your:pemvalue
Steps
-
Log into your Apple Developer Account (if you don't have one, you can create one here)
-
Get an App Id with the "Sign In with Apple" capability
- go to your Identifiers list
- start a new Identifier by clicking on the + sign in the Identifiers List
- select App IDs and click continue
- select App and continue
- enter a description and a bundle id
- check the "Sign In with Apple" capability
- save it
-
Get a Services Id (which we will use as our client id)
-
go to your Identifiers list
-
start a new Identifier by clicking on the + sign in the Identifiers List
-
select Services IDs and click continue
-
enter a description and a bundle id
-
make sure "Sign In with Apple" is checked, then click configure
-
make sure the Primary App ID matches the App ID you configured earlier
-
enter all the subdomains you might use (comma delimited):
example.com,www.example.com
-
enter all the redirect URLS you might use (comma delimited):
https://example.com/users/auth/apple/callback,https://example.com/users/auth/apple/callback
-
save the "Sign In with Apple" capability config and the Service Id
-
-
Get a Secret Key
- go to your Keys list
- start a new Key by clicking on the + sign in the Keys List
- enter a name
- make sure "Sign In with Apple" is checked, then click configure
- make sure the Primary App ID matches the App ID you configured earlier
- save the "Sign In with Apple" capability
- click "continue" to finish the Key config (you will be prompted to Download Your Key)
- Apple will give you a
.p8file, keep it safe and secure (don't commit it).
Mapping Apple Values to OmniAuth Values
-
your
:team_idis in the top-right of your App Id config (aka App ID Prefix), it looks like:H000000B -
your
:client_idis in the top-right of your Services Id config (aka Identifier), it looks like:com.example -
your
:key_idis on the left side of your Key Details page, it looks like:XYZ000000 -
your
:pemis the content of the.p8file you got from Apple, with an extra newline at the end -
example from a Devise config:
config.omniauth :apple, ENV['APPLE_SERVICE_BUNDLE_ID'], '', { scope: 'email name', team_id: ENV['APPLE_APP_ID_PREFIX'], key_id: ENV['APPLE_KEY_ID'], pem: ENV['APPLE_P8_FILE_CONTENT_WITH_EXTRA_NEWLINE'] }
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/nhosoya/omniauth-apple.
License
The gem is available as open source under the terms of the MIT License.