Rick
Rick

Reputation: 41

Bigcommerce redirect_uri_mismatch oauth2 error

I unable to authorize my rails app with bigcommerce oauth in staging/production server. The same configuration/code is working in development using ngrok.

Error message received: (bigcommerce) Authentication failure! invalid_credentials: OAuth2::Error, redirect_uri_mismatch: Parameter redirect_uri does not match registered URI {"error":"redirect_uri_mismatch","error_description":"Parameter redirect_uri does not match registered URI"}

This is what the app send to bigcommerce login server:

https://login.bigcommerce.com/oauth2/authorize?client_id=XXX&context=XXX&redirect_uri=https%3A%2F%2Fexample.com%2Fauth%2Fbigcommerce%2Fcallback&response_type=code&scope=store_v2_orders_read_only+store_v2_products_read_only+store_v2_customers_read_only+store_v2_information_read_only

Then Bigcommerce call app callback:

https://example.com/auth/bigcommerce/callback?code=dwud9qmc7wxehy5cd9da6avfy96yp7k&context=XXX&scope=store_v2_orders_read_only+store_v2_products_read_only+store_v2_customers_read_only+store_v2_information_read_only

I'm pretty sure redirect_uri passed to login server is same with the one i entered in my app callback url (copy paste).

Gem used: gem 'devise', '~> 2.2.4' gem 'omniauth-bigcommerce' gem 'bigcommerce', :github => 'mechatama/bigcommerce-api-ruby', :branch => 'oauth'

Am I missing something? I've been searching for a solution for the last few days.

Upvotes: 4

Views: 1024

Answers (1)

user1223967
user1223967

Reputation: 1

You need to add environment based redirect uri on your devise.rb

example :
setup: (lambda do |env|
      request = Rack::Request.new(env)
      env['omniauth.strategy'].options['token_params'] = {:redirect_uri => 'http://localhost:81/users/auth/google_oauth2/callback'}
      # http://e3a098b5.ngrok.io/users/auth/google_oauth2/callback
    end

Upvotes: 0

Related Questions