Java 使用scope属性进行Facebook身份验证
我正在编写一个Facebook应用程序,需要访问用户电子邮件并发布到timeline。我发现了以下两个链接:Java 使用scope属性进行Facebook身份验证,java,facebook,spring-mvc,spring-social,Java,Facebook,Spring Mvc,Spring Social,我正在编写一个Facebook应用程序,需要访问用户电子邮件并发布到timeline。我发现了以下两个链接: 告诉我如何使用的范围和defaultScope属性: org.springframework.social.facebook.security.FacebookAuthenticationService 但这两种解决方案都不起作用 该应用程序使用spring社交示例,如起点: @Configuration @EnableSocial public class FacebookC
org.springframework.social.facebook.security.FacebookAuthenticationService
但这两种解决方案都不起作用
该应用程序使用spring社交示例,如起点:
@Configuration
@EnableSocial
public class FacebookConfig implements SocialConfigurer
{
@Inject
private DataSource dataSource;
@Override
public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env)
{
final FacebookConnectionFactory fbcf = new FacebookConnectionFactory(env.getProperty("facebook.appKey"),
env.getProperty("facebook.appSecret"));
fbcf.setScope(env.getProperty("facebook.scope"));
cfConfig.addConnectionFactory(fbcf);
}
/**
* Singleton data access object providing access to connections across all
* users.
*/
@Override
public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator)
{
JdbcUsersConnectionRepository repository = new JdbcUsersConnectionRepository(dataSource,
connectionFactoryLocator, Encryptors.noOpText());
repository.setConnectionSignUp(new SimpleConnectionSignUp());
return repository;
}
public UserIdSource getUserIdSource()
{
return new UserIdSource() {
@Override
public String getUserId()
{
return SecurityContext.getCurrentUser().getId();
}
};
}
@Bean
@Scope(value = "request", proxyMode = ScopedProxyMode.INTERFACES)
public Facebook facebook(ConnectionRepository repository)
{
Connection<Facebook> connection = repository.findPrimaryConnection(Facebook.class);
return connection != null ? connection.getApi() : null;
}
@Bean
public CanvasSignInController canvasSignInController(ConnectionFactoryLocator connectionFactoryLocator,
UsersConnectionRepository usersConnectionRepository, Environment env)
{
return new CanvasSignInController(connectionFactoryLocator, usersConnectionRepository,
new SimpleSignInAdapter(), env.getProperty("facebook.appKey"), env.getProperty("facebook.appSecret"),
env.getProperty("facebook.canvasPage"));
}
}
@配置
@使能社会
公共类FacebookConfig实现SocialConfiger
{
@注入
私有数据源;
@凌驾
public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig,Environment env)
{
最终FacebookConnectionFactory fbcf=新的FacebookConnectionFactory(env.getProperty(“facebook.appKey”),
env.getProperty(“facebook.appSecret”);
fbcf.setScope(env.getProperty(“facebook.scope”);
cfConfig.addConnectionFactory(fbcf);
}
/**
*单例数据访问对象,提供对所有连接的访问
*用户。
*/
@凌驾
公共用户连接存储库getUsersConnectionRepository(ConnectionFactoryLocator ConnectionFactoryLocator)
{
JdbcUsersConnectionRepository=新的JdbcUsersConnectionRepository(数据源,
connectionFactoryLocator,Encryptors.noOpText());
setConnectionSignUp(新的SimpleConnectionSignUp());
返回存储库;
}
公共UserIdSource getUserIdSource()
{
返回新的UserIdSource(){
@凌驾
公共字符串getUserId()
{
返回SecurityContext.getCurrentUser().getId();
}
};
}
@豆子
@范围(value=“request”,proxyMode=ScopedProxyMode.INTERFACES)
公共Facebook(ConnectionRepository存储库)
{
Connection=repository.findPrimaryConnection(Facebook.class);
返回连接!=null?连接。getApi():null;
}
@豆子
公共画布控制器画布控制器(ConnectionFactoryLocator或ConnectionFactoryLocator,
用户连接存储库用户连接存储库,环境环境)
{
返回新的CanvasSignInControl(connectionFactoryLocator、usersConnectionRepository、,
新SimpleSignInAdapter()、env.getProperty(“facebook.appKey”)、env.getProperty(“facebook.appSecret”),
env.getProperty(“facebook.canvasPage”);
}
}
如何设置所需权限的作用域?Class CanvasSignInController有一个用于在Facebook上请求权限的作用域属性,只需将此属性设置为有效值,所有内容就会进入新世界