Spring Boot を使用して Spring Social Google アクセスを開発しています。構成しているとき
アプリケーションのプロパティ
春のソーシャルでGoogleのメタデータが見つかりません。
facebook、twitter、linkedin のメタデータがあるように。
次に、これを Client-ID と Client-Secret で構成するにはどうすればよいですか。これは、connectcontroller が Google に接続するために必要です。
Spring Boot を使用して Spring Social Google アクセスを開発しています。構成しているとき
アプリケーションのプロパティ
春のソーシャルでGoogleのメタデータが見つかりません。
facebook、twitter、linkedin のメタデータがあるように。
次に、これを Client-ID と Client-Secret で構成するにはどうすればよいですか。これは、connectcontroller が Google に接続するために必要です。
Spring Boot サポートが組み込まれたごく最近のバージョンでは、spring.social.google の下の application.properties で appSecret キーと appId キーを探します。
spring.social.google.appId=
spring.social.google.appSecret=
小道具ファイルを参照してください
古いコードは、これに似た SocialConfiguration クラスで手動で初期化する必要があります。この場合、application.properties で必要な任意のキーを使用できることに注意してください。
@Configuration
@EnableSocial
public class SocialConfiguration implements SocialConfigurer {
private static final Logger log = LoggerFactory.getLogger(SocialConfiguration.class);
@Autowired
private DataSource dataSource;
/**
* Configures the connection factories for Facebook.
*/
@Override
public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) {
log.debug("init connection factories");
cfConfig.addConnectionFactory(new FacebookConnectionFactory(
env.getProperty("facebook.app.id"),
env.getProperty("facebook.app.secret")
));
GoogleConnectionFactory googleConnectionFactory = new GoogleConnectionFactory(
env.getProperty("google.consumerKey"),
env.getProperty("google.consumerSecret")
);
googleConnectionFactory.setScope("email profile drive"); //drive.readonly drive.metadata.readonly
cfConfig.addConnectionFactory(googleConnectionFactory);
}
/**
* The UserIdSource determines the account ID of the user.
* The demo application uses the username as the account ID.
* (Maybe change this?)
*/
@Override
public UserIdSource getUserIdSource() {
return new AuthenticationNameUserIdSource();
}
@Override
public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) {
return new JdbcUsersConnectionRepository(
dataSource,
connectionFactoryLocator,
/**
* The TextEncryptor encrypts the authorization details of the connection.
* Here, the authorization details are stored as PLAINTEXT.
*/
Encryptors.noOpText()
);
}
/**
* This bean manages the connection flow between
* the account provider and the example application.
*/
@Bean
public ConnectController connectController(final ConnectionFactoryLocator connectionFactoryLocator,
final ConnectionRepository connectionRepository) {
return new ConnectController(connectionFactoryLocator, connectionRepository);
}
@Bean
@Scope(value = "request", proxyMode = ScopedProxyMode.INTERFACES)
public Google google(final ConnectionRepository repository) {
final Connection<Google> connection = repository.findPrimaryConnection(Google.class);
if (connection == null)
log.debug("Google connection is null");
else
log.debug("google connected");
return connection != null ? connection.getApi() : null;
}
@Bean(name = { "connect/googleConnect", "connect/googleConnected" })
@ConditionalOnProperty(prefix = "spring.social", name = "auto-connection-views")
public GenericConnectionStatusView googleConnectView() {
return new GenericConnectionStatusView("google", "Google");
}
}
Spring social には、Google 用の自動構成がありません。そのため、新しいプロパティを追加しても機能しません。クラスを見つけて (Eclipse では Ctrl+Shift+T)、Spring-autoconfigure.jar の org.springframework.boot.autoconfigure.social パッケージで見つけることができる FacebookAutoConfiguration クラスを探す必要があります。このファイルをコピーして Facebook を置き換えます。 Google と。
または、以下のクラスをコピーしてパッケージに入れ、クラスパス (src/main/java または別のソース フォルダー内) で利用できることを確認します。
@Configuration
@ConditionalOnClass({ SocialConfigurerAdapter.class, GoogleConnectionFactory.class })
@ConditionalOnProperty(prefix = "spring.social.google", name = "app-id")
@AutoConfigureBefore(SocialWebAutoConfiguration.class)
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class GoogleAutoConfiguration {
@Configuration
@EnableSocial
@EnableConfigurationProperties(GoogleProperties.class)
@ConditionalOnWebApplication
protected static class GoogleConfigurerAdapter extends SocialAutoConfigurerAdapter {
private final GoogleProperties properties;
protected GoogleConfigurerAdapter(GoogleProperties properties) {
this.properties = properties;
}
@Bean
@ConditionalOnMissingBean(Google.class)
@Scope(value = "request", proxyMode = ScopedProxyMode.INTERFACES)
public Google google(ConnectionRepository repository) {
Connection connection = repository.findPrimaryConnection(Google.class);
return connection != null ? connection.getApi() : null;
}
@Bean(name = { "connect/googleConnect", "connect/googleConnected" })
@ConditionalOnProperty(prefix = "spring.social", name = "auto-connection-views")
public GenericConnectionStatusView googleConnectView() {
return new GenericConnectionStatusView("google", "Google");
}
@Override
protected ConnectionFactory<?> createConnectionFactory() {
return new GoogleConnectionFactory(this.properties.getAppId(), this.properties.getAppSecret());
}
}
}
GoogleProperties を追加する
同じパッケージに以下のクラスを追加します
import org.springframework.boot.autoconfigure.social.SocialProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "spring.social.google")
public class GoogleProperties extends SocialProperties{
}
詳細な説明とステップバイステップガイドについては、このリンクに従ってください