我们正在使用spring-social将我们的应用程序集成到facebook。 在OAuth2AuthenticationService中,范围为空。 我们将范围设置为表单上的输入。但它不起作用,并且无法设置范围。 我们无法收到用户的电子邮件。
有没有办法覆盖“OAuth2AuthenticationService”范围变量?
不是:Spring社会版权是1.1.0.BUILD-SNAPSHOT
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 :(得分: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>
这适用于Spring Social 1.1.0.M3
答案 1 :(得分: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>
唯一的区别在于在最新的Spring Social版本中已重命名为'defaultScope'的属性'scope'。感谢Victor Lyuboslavsky分享初始配置。