Practice Spring Social connect Google

1. Introduction

Spring social google là một phần mở rộng của spring social, nó cho phép kết hợp với google service thông qua GoogleConnectionFactory, một connection factory có thể kết nối tới google qua API binding và service provider framework tới google rest service.

2. Get library social

Mình sử dụng project maven để get lib social google

<properties>
	<java-version>1.7</java-version>
	<org.springframework.social-version>1.1.0.RELEASE</org.springframework.social-version>
	<org.springframework.social.google-version>1.0.0.RELEASE</org.springframework.social.google-version>
	<org.springframework-version>4.0.4.RELEASE</org.springframework-version>
	<org.springframework.security.crypto-version>3.1.3.RELEASE</org.springframework.security.crypto-version>
</properties>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>${org.springframework-version}</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>${org.springframework-version}</version>
</dependency>
<dependency>
	<groupId>org.springframework.social</groupId>
	<artifactId>spring-social-core</artifactId>
	<version>${org.springframework.social-version}</version>
</dependency>
<dependency>
	<groupId>org.springframework.social</groupId>
	<artifactId>spring-social-web</artifactId>
	<version>${org.springframework.social-version}</version>
</dependency>
<dependency>
	<groupId>org.springframework.social</groupId>
	<artifactId>spring-social-google</artifactId>
	<version>${org.springframework.social.google-version}</version>
</dependency>
<dependency>
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-crypto</artifactId>
	<version>${org.springframework.security.crypto-version}</version>
</dependency>

3. Configuring google connectivity

Spring social google cung cấp GoogleConnectionFactory để tạo connect tới google API Để tạo clientId và clientSecrest mình sẽ vào đăng ký tại https://console.developers.google.com chi tiết hướng dẫn các bạn xem tại link sau: http://o7planning.org/vi/11123/tao-google-api-console-project-va-oauth2-client-id

Dưới đây là đoạn code config bằng anotation và config trong file xml

@Configuration
public class SocialConfig {

    @Inject
    private Environment environment;
        
    @Bean
    public ConnectionFactoryLocator connectionFactoryLocator() {
        ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
        registry.addConnectionFactory(new GoogleConnectionFactory(
            environment.getProperty("google.consumerKey"),
            environment.getProperty("google.consumerSecret")));
        return registry;
    }

}

dạng xml mình config như sau:

<bean id="connectionFactoryLocator" class="org.springframework.social.connect.support.ConnectionFactoryRegistry">
    <property name="connectionFactories">
        <list>
            <bean class="org.springframework.social.google.connect.GoogleConnectionFactory">
                <constructor-arg value="${google.consumerKey}" />
                <constructor-arg value="${google.consumerSecret}" />                            
            </bean>
        </list>
    </property>
</bean>

Trong bài chia sẻ này mình sẽ dùng spring social là: service provider framework để tạo instance của google từ connection.

Connection<Google> connection = connectionRepository.findPrimaryConnection(Google.class);
Google google = connection != null ? connection.getApi()

Với google chúng ta hay sử dụng một vài tương tác như là:

public interface Google {

    PlusOperations plusOperations();

    TaskOperations taskOperations();

    DriveOperations driveOperations();
    
    String getAccessToken();

}

trong 4 action mình muốn chia sẻ tới các bạn action đầu tiên plusOperation(), nó có nhiều các chức năng tiện ích như tìm kiếm user thông qua liên kết google, lấy thông tin profile hoặc lấy được thông tin hoạt động của user đó trên gmail. Mình làm một ví dụ về action plusOperation() với các chức năng search user gmail, các bạn có tham khảo resource mình cung cấp bên dưới nhé. https://github.com/duyngonhi/SpringSocialGoogle

4. Referent document and source code

Cảm ơn các bạn đã theo dõi bài chia nay.