2013-06-14 3 views
2

Мы используем spring-social для интеграции нашего приложения в facebook. В OAuth2AuthenticationService область пуста. Мы устанавливаем область как входной сигнал формы. Но это не работа, и область не может быть установлена. Мы не смогли получить электронную почту пользователя.spring social получить письмо пользователя при аутентификации

Есть ли способ переопределить переменную области действия «OAuth2AuthenticationService»?

Не: Весна социальной verison является 1.1.0.BUILD-ПАНОРАМА

We used spring social sample which contains security xml version

  <form name="fb_signin" id="fb_signin" action="../auth/facebook" 
       method="post"> 
       <input type="hidden" name="scope" 
        value="email,publish_stream,read_stream,offline_access" /> 
       <button type="submit"> <img src="../images/social/facebook/sign-in-with-facebook.png" /> </button> 
       <!-- 
       <input 
        type="image" 
        src="../images/social/facebook/sign-in-with-facebook.png" 
        align="right" /> 
       --> 
      </form> 
+0

Имея ту же проблему. Если я пытаюсь использовать '/ connect/facebook' вместо'/auth/facebook' для аутентификации, я вижу следующее предупреждение, которое превращается в исключение: 'WARN: org.springframework.social.connect.web.ConnectController - Исключение при обработке OAuth2 callback (синтаксический анализ выражений не выполнен; вложенное исключение - org.springframework.expression.spel.SpelEvaluationException: EL1007E: (pos 0): поле или имя свойства не могут быть найдены на нуле. Перенаправление на страницу состояния подключения к facebook. ' –

ответ

3

В вашей конфигурации, вам необходимо указать scope как свойство FacebookAuthenticationService. Это услуга, которая обрабатывает вызовы auth/facebook

В конфигурации XML, вместо:

<facebook:config app-id="${facebook.clientId}" app-secret="${facebook.clientSecret}"/> 

использование:

<bean id="connectionFactoryLocator" class="org.springframework.social.security.SocialAuthenticationServiceRegistry"> 
    <property name="authenticationServices"> 
     <list> 
      <bean class="org.springframework.social.facebook.security.FacebookAuthenticationService"> 
       <constructor-arg value="${facebook.clientId}" /> 
       <constructor-arg value="${facebook.clientSecret}" /> 
       <property name="scope" value="email" />    
      </bean> 
     </list> 
    </property> 
</bean> 

Это работает с весны социальной 1.1.0.M3

0

Чтобы использовать приведенную выше конфигурацию XML с Spring Social 1.1.0.RELEASE, используйте небольшую отредактированную версию:

<bean id="connectionFactoryLocator" class="org.springframework.social.security.SocialAuthenticationServiceRegistry"> 
    <property name="authenticationServices"> 
     <list> 
      <bean class="org.springframework.social.facebook.security.FacebookAuthenticationService"> 
       <constructor-arg value="${facebook.app.id}" /> 
       <constructor-arg value="${facebook.app.secret}" /> 
       <!-- Important: The next property name changed from "scope" to "defaultScope" in 1.1.0.M4 --> 
       <property name="defaultScope" value="email,user_friends" />    
      </bean> 
     </list> 
    </property> 
</bean> 

Единственная разница в области свойств, которая была переименована в «defaultScope» в последней версии Spring Social. Спасибо Виктору Любославскому за обмен исходной конфигурацией.

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