Почему Spring social facebook -2.0.3 использует устаревший график API версии 2.5, который устарел

Мы используем последнюю флягу spring-social-facebook-2.0.3 в производственной среде.

В апреле 2018 года график api v2.5 будет закрыт. Но последняя версия Spring-social-facebook-2.0.3 все еще использует этот устаревший граф API.

У любого есть знания,
Spring Team собирается выпустить новую версию spring-social-facebook до следующего месяца (т.е. до апреля 2018 года)?

1 ответ

Решение

Решение для тех, кто хочет изменить используемую версию API в версии 2.0.3 и Facebook API Upgrade Tool, говорит, что это не влияет на их приложения:

public class FacebookCustomApiVersionConnectionFactory extends OAuth2ConnectionFactory<Facebook> {

  public FacebookCustomApiVersionConnectionFactory(String apiVersion, String appId, String appSecret) {
    super("facebook", new FacebookCustomApiVersionServiceProvider(apiVersion, appId, appSecret, null), new FacebookAdapter());
  }
}


/**
 * Facebook ServiceProvider implementation that allows to change Facebook API version.
 */
public class FacebookCustomApiVersionServiceProvider extends AbstractOAuth2ServiceProvider<Facebook> {

  private final String appNamespace;

  private final String apiVersion;

  /**
   * Creates a FacebookServiceProvider for the given API version, application ID, secret, and namespace.
   *
   * @param apiVersion   Facebook API version
   * @param appId        The application's App ID as assigned by Facebook
   * @param appSecret    The application's App Secret as assigned by Facebook
   * @param appNamespace The application's App Namespace as configured with Facebook. Enables use of Open Graph operations.
   */
  public FacebookCustomApiVersionServiceProvider(String apiVersion, String appId, String appSecret, String appNamespace) {
    super(getOAuth2Template(apiVersion, "https://graph.facebook.com/v" + apiVersion + "/", appId, appSecret));
    this.apiVersion = apiVersion;
    this.appNamespace = appNamespace;
  }

  private static OAuth2Template getOAuth2Template(String apiVersion, String graphApiUrl, String appId, String appSecret) {
    OAuth2Template oAuth2Template = new OAuth2Template(appId, appSecret,
            "https://www.facebook.com/v" + apiVersion + "/dialog/oauth",
            graphApiUrl + "oauth/access_token");
    oAuth2Template.setUseParametersForClientAuthentication(true);
    return oAuth2Template;
  }

  public Facebook getApi(String accessToken) {
    FacebookTemplate facebook = new FacebookTemplate(accessToken, appNamespace);
    facebook.setApiVersion(apiVersion);
    return facebook;
  }
}

Весенняя социальная конфигурация

@Configuration
@EnableSocial
public class SocialConfiguration implements SocialConfigurer {

  @Override
  public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) {
    cfConfig.addConnectionFactory(new FacebookCustomApiVersionConnectionFactory("2.7", "appId","appSecret");

  }
...
}

Этот проект устарел. Они объявили, что конец жизни в 2018 году вступит в силу в 2019 году:https://spring.io/blog/2018/07/03/spring-social-end-of-life-announcement

Вместо этого они рекомендуют просто использовать Spring Security.

Мы можем просто изменить версию api следующим образом

FacebookTemplate facebookTemplate=new FacebookTemplate(accessToken);
facebookTemplate.setApiVersion("3.2");
System.out.println("graph url"+facebookTemplate.getBaseGraphApiUrl());
Другие вопросы по тегам