The project is in a healthy, maintained state
An OmniAuth strategy for the Instagram API with Instagram Login (https://developers.facebook.com/docs/instagram-platform/instagram-api-with-instagram-login)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

Omniauth::InstagramAPI

Gem Version Build Status License

An OmniAuth strategy for authenticating with the Instagram API with Instagram Login via OAuth.

Note: Instagram API with Instagram Login is different from the Instagram Login with Facebook Login

Installation

Add this line to your application's Gemfile:

gem 'omniauth-instagram-api'

And then execute:

bundle install

Usage

Here's an example of using it in a Rails application:

# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :instagram, ENV['INSTAGRAM_CLIENT_ID'], ENV['INSTAGRAM_CLIENT_SECRET']
end

Make sure to set INSTAGRAM_CLIENT_ID and INSTAGRAM_CLIENT_SECRET environment variables to your actual credentials or use Rails encrypted credentials (e.g. Rails.application.credentials.instagram).

Scopes

The default scope for this strategy is instagram_business_basic. To add more scopes simply specify them after your credentials:

# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :instagram, ENV['INSTAGRAM_CLIENT_ID'], ENV['INSTAGRAM_CLIENT_SECRET'],
    scope: [
        'instagram_business_basic',
        'instagram_business_content_publish',
        'instagram_business_manage_messages',
        'instagram_business_manage_comments',
    ].join(",")
end

Auth Hash

This is an example of what the Auth Hash available in request.env['omniauth.auth'] would look like:

{
  provider: 'instagram',
  uid: '1234567890',
  info: {
    name: "John Doe",
    nickname: "johndoe",
    image: "https://scontent-nrt1-1.cdninstagram.com/v/..."
  },
  credentials: {
    token: 'qwertyuiopasdfghjklzxcvbnm',
    expires: true,
    expires_at: 1733140352,
  },
  extra: {
    raw_info: {
      id: "987654321",
      name: "John Doe",
      user_id: "1234567890",
      username: "johndoe",
      media_count: 1,
      account_type: "BUSINESS",
      follows_count: 42,
      followers_count: 42,
      profile_picture_url: "https://scontent-nrt1-1.cdninstagram.com/v/..."
    }
  }
}

The token stored in the credentials lasts for 60 days and can be refreshed.

License

The gem is available as open source under the terms of the MIT License.