我正在编写需要访问用户电子邮件并发布到时间线的Facebook APP。我找到了这两个链接:
告诉我使用范围和defaultScope属性:
org.springframework.social.facebook.security.FacebookAuthenticationService
但这两种解决方案都没有起作用。
该应用程序使用spring-social-samples作为起点:
@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"));
}
}
如何设置所需权限的范围?
答案 0 :(得分:0)
类CanvasSignInController有一个scope属性,用于在Facebook上请求权限,只需使用有效值设置此属性,并且永远来到新世界。