这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
c358ecd
Merge branch 'eugenp:master' into master
wynnteo May 16, 2024
74f4a8b
Merge branch 'eugenp:master' into master
wynnteo May 23, 2024
12ae4a2
Merge branch 'eugenp:master' into master
wynnteo May 24, 2024
a556cad
Merge branch 'eugenp:master' into master
wynnteo May 28, 2024
e5f3c5a
Merge branch 'eugenp:master' into master
wynnteo May 31, 2024
5b337e9
Merge branch 'eugenp:master' into master
wynnteo Jun 5, 2024
55688c1
Merge branch 'eugenp:master' into master
wynnteo Jun 10, 2024
8b0ca7c
Merge branch 'eugenp:master' into master
wynnteo Jun 11, 2024
6350935
Merge branch 'eugenp:master' into master
wynnteo Jun 16, 2024
d73ca7f
Merge branch 'eugenp:master' into master
wynnteo Jun 23, 2024
45003f6
Merge branch 'eugenp:master' into master
wynnteo Jun 24, 2024
c458ec0
Merge branch 'eugenp:master' into master
wynnteo Jun 25, 2024
3705a63
Merge branch 'eugenp:master' into master
wynnteo Jul 1, 2024
1c782c3
Merge branch 'eugenp:master' into master
wynnteo Jul 2, 2024
f2de90d
Merge branch 'eugenp:master' into master
wynnteo Jul 5, 2024
53dc085
Merge branch 'eugenp:master' into master
wynnteo Jul 8, 2024
d4c19ab
Merge branch 'eugenp:master' into master
wynnteo Jul 10, 2024
ff8cd93
Merge branch 'eugenp:master' into master
wynnteo Jul 15, 2024
29bcb1d
Merge branch 'eugenp:master' into master
wynnteo Jul 16, 2024
16d5163
Merge branch 'eugenp:master' into master
wynnteo Jul 19, 2024
842edf8
Merge branch 'eugenp:master' into master
wynnteo Jul 22, 2024
f132c30
Merge branch 'eugenp:master' into master
wynnteo Jul 24, 2024
ed1c995
Merge branch 'eugenp:master' into master
wynnteo Jul 25, 2024
be344fb
Merge branch 'eugenp:master' into master
wynnteo Aug 6, 2024
541adfb
Merge branch 'eugenp:master' into master
wynnteo Aug 9, 2024
6fd4d5d
Merge branch 'eugenp:master' into master
wynnteo Aug 13, 2024
80a462c
Merge branch 'eugenp:master' into master
wynnteo Aug 15, 2024
55f1987
Merge branch 'eugenp:master' into master
wynnteo Aug 20, 2024
6df4fb8
Merge branch 'eugenp:master' into master
wynnteo Aug 26, 2024
d1e423e
Merge branch 'eugenp:master' into master
wynnteo Sep 5, 2024
7c7354e
Merge branch 'eugenp:master' into master
wynnteo Sep 16, 2024
f434a47
Merge branch 'eugenp:master' into master
wynnteo Sep 19, 2024
4774de0
Merge branch 'eugenp:master' into master
wynnteo Sep 21, 2024
2260623
Merge branch 'eugenp:master' into master
wynnteo Sep 30, 2024
984f427
Merge branch 'eugenp:master' into master
wynnteo Sep 30, 2024
80cbd03
Merge branch 'eugenp:master' into master
wynnteo Oct 3, 2024
22dcaba
Merge branch 'eugenp:master' into master
wynnteo Oct 3, 2024
05494c0
Merge branch 'eugenp:master' into master
wynnteo Oct 10, 2024
0e87d28
Merge branch 'eugenp:master' into master
wynnteo Oct 14, 2024
983608b
Merge branch 'eugenp:master' into master
wynnteo Oct 22, 2024
b37b377
Merge branch 'eugenp:master' into master
wynnteo Oct 29, 2024
dadfb2f
Merge branch 'eugenp:master' into master
wynnteo Nov 1, 2024
ece1b1c
Merge branch 'eugenp:master' into master
wynnteo Nov 7, 2024
319081a
Merge branch 'eugenp:master' into master
wynnteo Nov 8, 2024
ac445aa
Merge branch 'eugenp:master' into master
wynnteo Nov 26, 2024
64c96b9
Merge branch 'eugenp:master' into master
wynnteo Dec 11, 2024
ee18089
Merge branch 'eugenp:master' into master
wynnteo Dec 18, 2024
d32e660
Merge branch 'eugenp:master' into master
wynnteo Dec 19, 2024
c186fdd
Merge branch 'eugenp:master' into master
wynnteo Dec 24, 2024
e216122
Merge branch 'eugenp:master' into master
wynnteo Jan 9, 2025
96f545e
Merge branch 'eugenp:master' into master
wynnteo Jan 20, 2025
b2a8b7b
Merge branch 'eugenp:master' into master
wynnteo Feb 5, 2025
afb1645
Merge branch 'eugenp:master' into master
wynnteo Feb 12, 2025
11308fb
Merge branch 'eugenp:master' into master
wynnteo Feb 21, 2025
76e0935
Merge branch 'eugenp:master' into master
wynnteo Feb 25, 2025
c0fe750
Merge branch 'eugenp:master' into master
wynnteo Feb 28, 2025
80bee83
Merge branch 'eugenp:master' into master
wynnteo Mar 10, 2025
71b8373
Merge branch 'eugenp:master' into master
wynnteo Mar 13, 2025
f8338d0
Merge branch 'eugenp:master' into master
wynnteo Mar 18, 2025
9f78b8e
Merge branch 'eugenp:master' into master
wynnteo Mar 20, 2025
2797cce
Merge branch 'eugenp:master' into master
wynnteo Apr 3, 2025
489e3f9
BAEL-9220
wynnteo Apr 8, 2025
21e3bf0
change sop to logger
wynnteo Apr 14, 2025
5936b2b
move to libraries-5
wynnteo Apr 15, 2025
3cff5d2
Merge branch 'master' into BAEL-9220
wynnteo Apr 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions libraries-5/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,11 @@
<version>${spring-boot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.restfb</groupId>
<artifactId>restfb</artifactId>
<version>${com.restfb.version}</version>
</dependency>
</dependencies>

<properties>
Expand All @@ -231,6 +236,7 @@
<resilience4j.version>2.1.0</resilience4j.version>
<jline.version>3.28.0</jline.version>
<github-api.version>1.327</github-api.version>
<com.restfb.version>2025.6.0</com.restfb.version>
<objenesis.version>3.4</objenesis.version>
</properties>

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.baeldung.facebook;

import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.Version;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FacebookConfig {

@Value("${facebook.access.token}")
private String accessToken;

@Value("${facebook.app.secret}")
private String appSecret;

@Bean
public FacebookClient facebookClient() {
return new DefaultFacebookClient(accessToken, appSecret, Version.LATEST);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package com.baeldung.facebook;

import com.restfb.BinaryAttachment;
import com.restfb.Connection;
import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.Parameter;
import com.restfb.Version;
import com.restfb.types.FacebookType;
import com.restfb.types.Page;
import com.restfb.types.User;
import com.restfb.exception.FacebookOAuthException;
import com.restfb.exception.FacebookResponseContentException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.io.InputStream;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

@Service
public class FacebookService {

@Autowired
private FacebookClient facebookClient;

@Value("${facebook.app.secret}")
private String appSecret;

private static final Logger logger = Logger.getLogger(FacebookService.class.getName());


public User getUserProfile() {
try {
return facebookClient.fetchObject("me", User.class, Parameter.with("fields", "id,name,email"));
} catch (FacebookOAuthException e) {
// Handle expired/invalid token
logger.log(Level.SEVERE,"Authentication failed: " + e.getMessage());
return null;
} catch (FacebookResponseContentException e) {
// General API errors
logger.log(Level.SEVERE,"API error: " + e.getMessage());
return null;
}
}

public List<User> getFriendList() {
try {
Connection<User> friendsConnection = facebookClient.fetchConnection("me/friends", User.class);
return friendsConnection.getData();
} catch (Exception e) {

logger.log(Level.SEVERE,"Error fetching friends list: " + e.getMessage());
return null;
}
}

public String postStatusUpdate(String message) {
try {
FacebookType response = facebookClient.publish("me/feed", FacebookType.class, Parameter.with("message", message));
return "Post ID: " + response.getId();
} catch (Exception e) {
logger.log(Level.SEVERE,"Failed to post status: " + e.getMessage());
return null;
}
}

public void uploadPhotoToFeed() {
try (InputStream imageStream = getClass().getResourceAsStream("/static/image.jpg")) {
FacebookType response = facebookClient.publish("me/photos", FacebookType.class, BinaryAttachment.with("image.jpg", imageStream),
Parameter.with("message", "Uploaded with RestFB"));
logger.log(Level.INFO,"Photo uploaded. ID: " + response.getId());
} catch (IOException e) {
logger.log(Level.SEVERE,"Failed to read image file: " + e.getMessage());
}
}

public String postToPage(String pageId, String message) {
try {
Page page = facebookClient.fetchObject(pageId, Page.class, Parameter.with("fields", "access_token"));

FacebookClient pageClient = new DefaultFacebookClient(page.getAccessToken(), appSecret, Version.LATEST);

FacebookType response = pageClient.publish(pageId + "/feed", FacebookType.class, Parameter.with("message", message));

return "Page Post ID: " + response.getId();
} catch (Exception e) {
logger.log(Level.SEVERE,"Failed to post to page: " + e.getMessage());
return null;
}
}
}
2 changes: 2 additions & 0 deletions libraries-5/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
facebook.access.token=YOUR_ACCESS_TOKEN
facebook.app.secret=YOUR_APP_SECRET