2014-01-15 3 views
0

Я пытаюсь использовать плагин Shiro-Oauth 0.3 со следующей настройкой. Config:Плагин Shiro-Oauth

oauth { 
    providers { 
     google { 
      api = org.scribe.builder.api.GoogleApi 
      key = 'key' 
      secret = 'secret' 
      scope = 'https://www.googleapis.com/auth/userinfo.email' 
      callback = "${grails.serverURL}/oauth/google/callback" 
      successUri = '/oauth/success?provider=google' 
      failureUri = '/oauth/failure' 
     } 
    } 
    debug = true 
} 

security.shiro.oauth.linkAccountUrl = "/oauth/linkaccount" 

Сложение конфигурации:

repositories { 
    mavenRepo "http://repo.desirableobjects.co.uk/" 
} 

plugins { 
    compile (":shiro:1.2.0") { 
     excludes "servlet-api" 
    } 

    compile ":shiro-oauth:0.3" 
} 

При запуске проекта я получаю следующее:

Настройка Широ ...

| Error 2014-01-14 17:49:04,233 [localhost-startStop-1] ERROR context.GrailsContextLoader -   Error initializing the application: Error creating bean with name 'uk.co.desirableobjects.oauth.scribe.OauthController': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oauthService': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [uk.co.desirableobjects.oauth.scribe.OauthService]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Callback must be a valid URL or 'oob' 
Message: Error creating bean with name 'uk.co.desirableobjects.oauth.scribe.OauthController': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'oauthService': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [uk.co.desirableobjects.oauth.scribe.OauthService]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Callback must be a valid URL or 'oob' 
    Line | Method 
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 138 | run  in java.util.concurrent.FutureTask 
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker 
| 918 | run  in  '' 
^ 695 | run . . in java.lang.Thread 
Caused by BeanCreationException: Error creating bean with name 'oauthService': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [uk.co.desirableobjects.oauth.scribe.OauthService]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Callback must be a valid URL or 'oob' 
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 138 | run  in java.util.concurrent.FutureTask 
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker 
| 918 | run  in  '' 
^ 695 | run . . in java.lang.Thread 
Caused by BeanInstantiationException: Could not instantiate bean class  [uk.co.desirableobjects.oauth.scribe.OauthService]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Callback must be a valid URL or 'oob' 
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 138 | run  in java.util.concurrent.FutureTask 
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker 
| 918 | run  in  '' 
^ 695 | run . . in java.lang.Thread 
Caused by IllegalArgumentException: Callback must be a valid URL or 'oob' 
->> 80 | check in org.scribe.utils.Preconditions 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
| 66 | checkValidOAuthCallback in  '' 
| 87 | callback in org.scribe.builder.ServiceBuilder 
| 84 | doCall in uk.co.desirableobjects.oauth.scribe.OauthService$_buildService_closure1 
| 66 | buildService in uk.co.desirableobjects.oauth.scribe.OauthService 
| 43 | <init> in  '' 
| 303 | innerRun in java.util.concurrent.FutureTask$Sync 
| 138 | run  in java.util.concurrent.FutureTask 
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker 
| 918 | run  in  '' 
^ 695 | run . . in java.lang.Thread 
| Error Forked Grails VM exited with error 

Кто-нибудь какие-либо идеи по почему это вызвано?

ответ

0

Есть grails.serverURL набор в Config.groovy? Поставщик OAuth перезвонит на ваш сервер, поэтому вы должны настроить правильный URL-адрес.

+0

Благодаря Берт. Установка grails.serverURL вернула работу. Сиро все еще, кажется, доминирует прямо сейчас. Я не могу войти через Google, пока я не вхожу в систему через Сиро. Какие-либо предложения? – richari1987

+0

Извините, я не использовал Shiro много, в основном Spring Security. Вы можете попробовать список рассылки пользователей Grails, я предполагаю, что там будут люди, которые использовали Shiro + OAuth –

+1

@ richari1987 - вам нужно реализовать действие linkAccount в вашем приложении и настроить security.shiro.oauth.linkAccountUrl, чтобы указать на это действие, в этом действии, вам нужно создать новую пользовательскую запись и аутентифицировать ее, а затем переслать в ссылку действие «Аккаунт» контроллера shiroOAuth. Все это упоминается в документах здесь http://pledbrook.github.io/grails-shiro-oauth/guide/introduction.html –

-1

Это происходит, если вы неправильно настроили serverUrl, что привело к недействительному URL-адресу обратного вызова oauth.

Попробуйте это в Config.groovy

Это должно исправить ошибку

+0

Что пошло не так, что вызвало отрицательный голос! –

Смежные вопросы