Spring 社交 Facebook 个人资料 URL 不正确
Spring Social Facebook Profile URL incorrect
我为 facebook 配置了 spring 社交,还在我的应用程序中使用自定义 UsersConnectionRepository
和 ConnectionRepository
.
配置了 spring 社交身份验证
配置文件
@Configuration
public class SocialConfig extends SocialConfigurerAdapter{
...
@Override
public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator factoryLocator) {
SecUsersConnectionRepository repository = new SecUsersConnectionRepository(factoryLocator, userRepository, userConnectionRepository);
return repository;
}
...
}
连接存储库实施
public class SecConnectionRepository implements ConnectionRepository {
...
@Override
public void addConnection(Connection<?> connection) {
UserConnection userConnection = userRepository.findConnectionBy(user, connection.getKey().getProviderId(), connection.getKey().getProviderUserId());
if (userConnection == null) {
...
userConnection.setProviderId(data.getProviderId());
userConnection.setProviderUserId(data.getProviderUserId());
userConnection.setDisplayName(data.getDisplayName());
userConnection.setProfileUrl(data.getProfileUrl());
userConnection.setImageUrl(data.getImageUrl());
...
} else {
throw new DuplicateConnectionException(connection.getKey());
}
}
当我添加我的 facebook 登录时,Connect<A>
接口对象获取 profileUrl
,但是 URL 是这种格式
https://www.facebook.com/profile.php?id=XXXXXXXXXXXXXXX&_rdr
如果我打开这个 link 浏览器会显示
Gradle 文件
buildscript {
repositories {
maven { url "https://repo.spring.io/libs-release" }
... }
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
}
}
apply plugin: 'java'
...
jar {...}
repositories {
...
maven { url "https://repo.spring.io/libs-release" }
}
dependencies {
...
compile("org.springframework.social:spring-social-facebook")
compile("org.springframework.social:spring-social-security")
... }
task wrapper(type: Wrapper) {...}
我做错了什么?
解决方案
更新 spring 中的 FB 库解决了问题。
compile("org.springframework.social:spring-social-facebook:2.0.1.RELEASE")
检查您使用的是否是最新版本的 Spring Social。 profileUrl 现在应该有 scheme
https://www.facebook.com/app_scoped_user_id/{app_scoped_user_id}/
其中 {app_scoped_user_id}
是应用范围内的实际用户 ID。
见
我为 facebook 配置了 spring 社交,还在我的应用程序中使用自定义 UsersConnectionRepository
和 ConnectionRepository
.
配置文件
@Configuration
public class SocialConfig extends SocialConfigurerAdapter{
...
@Override
public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator factoryLocator) {
SecUsersConnectionRepository repository = new SecUsersConnectionRepository(factoryLocator, userRepository, userConnectionRepository);
return repository;
}
...
}
连接存储库实施
public class SecConnectionRepository implements ConnectionRepository {
...
@Override
public void addConnection(Connection<?> connection) {
UserConnection userConnection = userRepository.findConnectionBy(user, connection.getKey().getProviderId(), connection.getKey().getProviderUserId());
if (userConnection == null) {
...
userConnection.setProviderId(data.getProviderId());
userConnection.setProviderUserId(data.getProviderUserId());
userConnection.setDisplayName(data.getDisplayName());
userConnection.setProfileUrl(data.getProfileUrl());
userConnection.setImageUrl(data.getImageUrl());
...
} else {
throw new DuplicateConnectionException(connection.getKey());
}
}
当我添加我的 facebook 登录时,Connect<A>
接口对象获取 profileUrl
,但是 URL 是这种格式
https://www.facebook.com/profile.php?id=XXXXXXXXXXXXXXX&_rdr
如果我打开这个 link 浏览器会显示
Gradle 文件
buildscript {
repositories {
maven { url "https://repo.spring.io/libs-release" }
... }
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
}
}
apply plugin: 'java'
...
jar {...}
repositories {
...
maven { url "https://repo.spring.io/libs-release" }
}
dependencies {
...
compile("org.springframework.social:spring-social-facebook")
compile("org.springframework.social:spring-social-security")
... }
task wrapper(type: Wrapper) {...}
我做错了什么?
解决方案
更新 spring 中的 FB 库解决了问题。
compile("org.springframework.social:spring-social-facebook:2.0.1.RELEASE")
检查您使用的是否是最新版本的 Spring Social。 profileUrl 现在应该有 scheme
https://www.facebook.com/app_scoped_user_id/{app_scoped_user_id}/
其中 {app_scoped_user_id}
是应用范围内的实际用户 ID。
见