Strategy to authenticate with Fortnox via OAuth2 in OmniAuth.
You will need to create your app in order to get Client-ID and Client-Secret, read more here: Fortnox
For more details, read the Fortnox docs: Fortnox Developer
Add this line to your application's Gemfile:
gem 'omniauth-fortnox-oauth2'And then execute:
$ bundle install
Or install it yourself as:
$ gem install omniauth-fortnox-oauth2
Here's an example for adding the middleware to a Rails app in config/initializers/omniauth.rb:
  provider :fortnox_oauth2,
            'client-id',
            'client-secret',
            scope: 'companyinformation',Can also be set up with dynamic configuration:
  provider :fortnox_oauth2,
           setup: (lambda do |env|
                     # The following can be set dynamically from params, session, or ENV
                     env['omniauth.strategy'].options[:client_id] = 'client-id'
                     env['omniauth.strategy'].options[:client_secret] = 'client-secret'
                     env['omniauth.strategy'].options[:scope] = 'companyinformation'
                   end)Service account in Fortnox can be configured with the optional parameter account_type.
  account_type: 'service'You can now access the OmniAuth Fortnox OAuth2 URL: /auth/fortnox_oauth2 Later a controller can be set up to handle the response after authentication, for example:
get '/auth/fortnox_oauth2/callback', to: 'auth/fortnox_oauth2#callback'You can configure several options, which you pass in to the provider method via a hash:
- 
scope: A comma-separated list of permissions you want to request from the user. See the Fortnox for a full list of available permissions. Caveats:- Note that you app will need the same scopes! The scope 
companyinformationis used by default. By defining your ownscope, you override these defaults. 
 - Note that you app will need the same scopes! The scope 
 - 
callback_url: Override the callback_url used by the gem. 
You can also configure the client_options by passing in any of the following settings in a client_options hash, inside options.
- 
site: Override the site used by the gem, default:https://apps.fortnox.se. - 
token_url: Override the token_url used by the gem, default:/oauth-v1/token. - 
authorize_url: Override the authorize_url used by the gem, default/oauth-v1/auth. - 
auth_scheme: Override the auth_scheme used by the gem, default:basic_auth. - 
token_method: Override the token_method used by the gem, default:post. 
Here's an example of an authentication hash available in the callback by accessing request.env['omniauth.auth']:
{
  "provider" => "fortnox_oauth2",
  "uid" => "556469-6291",
  "info" => {
    "address" => "Bollvägen",
    "city" => "Växjö",
    "country_code" => "SE",
    "database_number" => "654896",
    "company_name" => "Fortnox",
    "organization_number" => "556469-6291",
    "zip_code" => "35246"
  },
  "credentials" => {
    "token" => "TOKEN",
    "refresh_token" => "REFRESH_TOKEN",
    "expires_at" => 1496120719,
    "expires" => true
  },
  "extra" => {
    "raw_info" => {
      "Address" => "Bollvägen",
      "City" => "Växjö",
      "CountryCode" => "SE",
      "DatabaseNumber" => "654896",
      "CompanyName" => "Fortnox",
      "OrganizationNumber" => "556469-6291",
      "VisitAddress" => "",
      "VisitCity" => "",
      "VisitZipCode" => "",
      "ZipCode" => "35246",
    }
  }
}After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/standout/omniauth-fortnox-oauth2.
The gem is available as open source under the terms of the MIT License.