12/08/2018, 15:12

Practice Spring Social Connect Facbook

Chào các bạn nay mình xin chia sẻ cách connect tới facebook một cách dễ dàng khi sử dụng Spring Boot. Đây là câu truc project mình tạo, sau đây mình sẽ đi vào phân tích dựng project này. Enable Facebook Trước khi bạn có thể lấy dữ liệu của người dùng từ Facebook, bạn phải chỉ định ID của ứng ...

Chào các bạn nay mình xin chia sẻ cách connect tới facebook một cách dễ dàng khi sử dụng Spring Boot. Đây là câu truc project mình tạo, sau đây mình sẽ đi vào phân tích dựng project này.

  • Enable Facebook Trước khi bạn có thể lấy dữ liệu của người dùng từ Facebook, bạn phải chỉ định ID của ứng dụng trong file

application.properties

spring.social.facebook.appId=233668646673605
spring.social.facebook.appSecret=33b17e044ee6a4fa383f46ec6e28ea1d
  • Create connection status views

ConnectController không định nghĩa view cho nó, nên bạn cần phải tạo chúng

Các bạn dựng các file html theo đường dẫn này

src/main/resources/templates/facebookConnect.html (1)

<html>
	<head>
		<title>Hello Facebook</title>
	</head>
	<body style="text-align: center;">
		<h3>Connect to Facebook</h3>
		
		<form action="/connect/facebook" method="POST">
			<input type="hidden" name="scope" value="user_posts" />
			<p><button type="submit">Connect to Facebook</button></p>
		</form>
	</body>
</html>

. .

src/main/resources/templates/connect/facebookConnected.html (2)

<html>
	<body>
		<h3>Connected to Facebook</h3>
		<p>
			Click <a href="/">here</a> to see some entries from your Facebook feed.
		</p>
	</body>
</html>

src/main/resources/templates/user.html (3)

<html>
	<head>
		<title>Hello Facebook</title>
	</head>
	<body>
		<h3>Hello, <span th:text="${facebookProfile.name}">Some User</span>!</h3>
		<h4>Here is your feed:</h4>
		<div th:each="post:${feed}">
			<b th:text="${post.from.name}">from</b> wrote:
			<p th:text="${post.message}">message text</p>
			<img th:if="${post.picture}" th:src="${post.picture}"/>
			<hr/>
		</div>
	</body>
</html>

. .

  • Fetch Facebook data Facebook đã được cấu hình trong ứng dụng bây giờ bạn config Spring MVC lấy dữ liệu cho người dùng đã ủy quyền cho ứng dụng như sau:

src/main/java/hello/HelloController.java

package com.social.boot;

import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.PagedList;
import org.springframework.social.facebook.api.Post;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class HelloController {

    private Facebook facebook;
    private ConnectionRepository connectionRepository;

    public HelloController(Facebook facebook, ConnectionRepository connectionRepository) {
        this.facebook = facebook;
        this.connectionRepository = connectionRepository;
    }

    @GetMapping
    public String helloFacebook(Model model) {
        if (connectionRepository.findPrimaryConnection(Facebook.class) == null) {
            return "facebookConnect";
        }

        model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile());
        PagedList<Post> feed = facebook.feedOperations().getFeed();
        model.addAttribute("feed", feed);
        return "user";
    }

}

Facebook được tạo ra bằng cách tiêm vào hàm constructor của HelloController Nếu người dùng authen Facebook thành công, ứng dụng sẽ lấy profile của người dùng cũng như một vài mục gần đây nhất trong nguồn cấp dữ liệu của người dùng. Dữ liệu được đặt vào model và trả về trang "user". Cuối cùng là file chay ứng dụng spring boot

src/main/java/hello/Application.java

package com.social.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

Trong ứng dụng sping boot thì không cần đến file web.xml

Các bạn có thể xem thêm tại link tham khảo sau

https://spring.io/guides/gs/accessing-facebook/

0