NoMethodError when account type is Viewer
Closed this issue · 1 comments
danarnold commented
When attempting to authenticate to an alternate account using multi-account support, if the account type is set to Viewer, a NoMethodError is thrown because raw_info
returns an error hash.
The error:
NoMethodError - undefined method `[]' for nil:NilClass:
omniauth-mailchimp (1.0.3) lib/omniauth/strategies/mailchimp.rb:22:in `block in <class:Mailchimp>'
omniauth (1.2.1) lib/omniauth/strategy.rb:105:in `block in compile_stack'
omniauth (1.2.1) lib/omniauth/strategy.rb:104:in `compile_stack'
(eval):7:in `info_stack'
omniauth (1.2.1) lib/omniauth/strategy.rb:321:in `info'
omniauth (1.2.1) lib/omniauth/strategy.rb:334:in `auth_hash'
omniauth (1.2.1) lib/omniauth/strategy.rb:361:in `callback_phase'
omniauth-oauth2 (1.1.2) lib/omniauth/strategies/oauth2.rb:77:in `callback_phase'
omniauth (1.2.1) lib/omniauth/strategy.rb:227:in `callback_call'
omniauth (1.2.1) lib/omniauth/strategy.rb:184:in `call!'
omniauth (1.2.1) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.1) lib/omniauth/builder.rb:59:in `call'
The value of raw_info
when called at line 22 of the strategy:
{"error"=>"Only API Keys belonging to users with \"manager\", \"admin\", or \"owner\" roles may access this API.", "code"=>109}
danarnold commented
I updated to the GitHub version of the gem and found that this has changed; now, an OAuth2::Error
is thrown instead.
OAuth2::Error - API Keys belonging to users with "author" roles are not permitted to access helper/account-details:
{"status":"error","code":109,"name":"User_InvalidRole","error":"API Keys belonging to users with \"author\" roles are not permitted to access helper\/account-details"}:
oauth2 (0.9.3) lib/oauth2/client.rb:110:in `request'
oauth2 (0.9.3) lib/oauth2/access_token.rb:107:in `request'
oauth2 (0.9.3) lib/oauth2/access_token.rb:114:in `get'
() Users/user/.rvm/gems/ruby-2.0.0-p481@exitmonitor/bundler/gems/omniauth-mailchimp-239e08d3297c/lib/omniauth/strategies/mailchimp.rb:48:in `raw_info'
() Users/user/.rvm/gems/ruby-2.0.0-p481@exitmonitor/bundler/gems/omniauth-mailchimp-239e08d3297c/lib/omniauth/strategies/mailchimp.rb:23:in `block in <class:Mailchimp>'
omniauth (1.2.1) lib/omniauth/strategy.rb:105:in `block in compile_stack'
omniauth (1.2.1) lib/omniauth/strategy.rb:104:in `compile_stack'
(eval):7:in `uid_stack'
omniauth (1.2.1) lib/omniauth/strategy.rb:317:in `uid'
omniauth (1.2.1) lib/omniauth/strategy.rb:333:in `auth_hash'
omniauth (1.2.1) lib/omniauth/strategy.rb:361:in `callback_phase'
omniauth-oauth2 (1.1.2) lib/omniauth/strategies/oauth2.rb:77:in `callback_phase'
omniauth (1.2.1) lib/omniauth/strategy.rb:227:in `callback_call'
omniauth (1.2.1) lib/omniauth/strategy.rb:184:in `call!'
omniauth (1.2.1) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.1) lib/omniauth/builder.rb:59:in `call'
I assume this is the intended behavior and so I'll close the issue. I wonder if there's a more graceful way to handle this?