Add NestJS Admin Facebook Publishing API with Image Support

This commit is contained in:
Hamza-Ayed
2026-07-24 17:00:52 +03:00
parent 0b9dca5d75
commit 16d7ec0364
3 changed files with 77 additions and 9 deletions
+18 -9
View File
@@ -81,19 +81,22 @@ async function generatePostWithGemini(topic = 'منشور تعريفي عن من
}
/**
* Publish generated post to Meta Facebook Page
* Publish generated post to Meta Facebook Page (supports optional image)
*/
async function publishToFacebook(message) {
async function publishToFacebook(message, imageUrl = null) {
console.log(`Publishing generated post to Facebook Page ID: ${META_PAGE_ID}...`);
const url = `https://graph.facebook.com/v19.0/${META_PAGE_ID}/feed`;
const endpoint = imageUrl ? `${META_PAGE_ID}/photos` : `${META_PAGE_ID}/feed`;
const url = `https://graph.facebook.com/v19.0/${endpoint}`;
const payload = imageUrl
? { access_token: META_ACCESS_TOKEN, caption: message, url: imageUrl }
: { access_token: META_ACCESS_TOKEN, message: message };
const res = await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
access_token: META_ACCESS_TOKEN,
message: message
})
body: JSON.stringify(payload)
});
const data = await res.json();
@@ -107,15 +110,21 @@ async function publishToFacebook(message) {
async function main() {
const topic = process.argv[2] || 'منشور تعريفي عن منصة Tripz ومزايا التملك والشفافية والتوفير وحاسبة الأرباح';
const imageUrl = process.argv[3] || null;
try {
const postContent = await generatePostWithGemini(topic);
console.log('\n--- Generated Post Content ---\n');
console.log(postContent);
console.log('\n------------------------------\n');
const result = await publishToFacebook(postContent);
if (imageUrl) {
console.log('Attached Image Creative URL:', imageUrl);
}
const result = await publishToFacebook(postContent, imageUrl);
console.log('🎉 Post Published Successfully to Facebook!');
console.log('Meta Post ID:', result.id);
console.log('Meta Post ID:', result.id || result.post_id);
} catch (err) {
console.error('❌ Error:', err.message);
}