【问题标题】:Spring social - Exception while completing OAuth 2 connection: Authorization is required for the operation,Spring social - 完成 OAuth 2 连接时出现异常:操作需要授权,
【发布时间】:2017-04-14 16:20:54
【问题描述】:

我正在创作 spring-social。当我单击 / 登录 / facebook 按钮时:

完成 OAuth 2 连接时出现异常: org.springframework.social.MissingAuthorizationException: 操作需要授权,但API已创建 未经授权。

我遇到了这个错误。
作为调试的结果,facebook 访问令牌似乎很受欢迎。

正常登录Facebook后,此部分出现错误。
ConnectSupport 类:

AccessGrant accessGrant = connectionFactory.getOAuthOperations().exchangeForAccess(code, callbackUrl(request), null);

这是我的作文。

社交配置:

@Inject
private DataSource dataSource;

@Autowired
UserRepository userRepository;

@Autowired
PostSocialSignInAdapter postSocialSignInAdapter;

@Override
public UserIdSource getUserIdSource() {
    return new CUserIdSource();
}

@Override
public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) {
    String appKey = "4123213121231231212331";
    String appSecret = "512312312lkjj1232kj3l1jl213";

    cfConfig.addConnectionFactory(new FacebookConnectionFactory(appKey, appSecret));
}

@Override
public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) {
    JdbcUsersConnectionRepository repository = new JdbcUsersConnectionRepository(dataSource,
            connectionFactoryLocator, Encryptors.noOpText());
    repository.setConnectionSignUp(new SocialImplicitSignUp(userRepository));
    return repository;
}

@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 ProviderSignInController providerSignInController(ConnectionFactoryLocator connectionFactoryLocator,
        UsersConnectionRepository usersConnectionRepository) {
    ProviderSignInController providerSignInController = new ProviderSignInController(connectionFactoryLocator,
            usersConnectionRepository, postSocialSignInAdapter);
    providerSignInController.setSignUpUrl("/");
    return providerSignInController;
}

UserRepository 接口

public interface UserRepository extends JpaRepository<User, String> {
   public User findByusername(String username);
}

错误日志

ERROR: org.springframework.social.connect.web.ProviderSignInController - Exception while completing OAuth 2 connection: 
org.springframework.social.MissingAuthorizationException: Authorization is required for the operation, but the API binding was created without authorization.

    at org.springframework.social.facebook.api.impl.AbstractFacebookOperations.requireAuthorization(AbstractFacebookOperations.java:30)
at org.springframework.social.facebook.api.impl.UserTemplate.getUserProfile(UserTemplate.java:48)
at org.springframework.social.facebook.connect.FacebookAdapter.setConnectionValues(FacebookAdapter.java:42)
at org.springframework.social.facebook.connect.FacebookAdapter.setConnectionValues(FacebookAdapter.java:30)
at org.springframework.social.connect.support.AbstractConnection.setValues(AbstractConnection.java:175)
at org.springframework.social.connect.support.AbstractConnection.initKey(AbstractConnection.java:137)
at org.springframework.social.connect.support.OAuth2Connection.<init>(OAuth2Connection.java:75)

我不知道该怎么做。请帮帮我。

【问题讨论】:

    标签: java spring spring-social


    【解决方案1】:

    这可能与许多原因有关,但首先您应该检查您的 spring-social-facebook 版本。由于 Facebook graph api 2.2 弃用,Spring 建议将版本更改为 2.0.3.RELEASE。 其他人在这里谈论类似的问题"similar post

    不要尝试 2.0.2.RELEASE,AFAIK 存在一个问题,即在 json 调用上未映射的属性类型不一致。

    【讨论】:

    • 感谢您的信息。更改版本解决了这个问题。
    • 同样的问题。然后我将 spring-social-facebook 从版本 1.1.1.RELEASE 更改为版本 2.0.3.RELEASE,问题解决了。谢谢。
    猜你喜欢
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2016-03-14
    • 2013-04-29
    • 1970-01-01
    • 2022-12-09
    • 2011-10-01
    相关资源
    最近更新 更多