#facebook #api-client #post #upload #api #video #page

fb_poster

Facebook帖子上传的非官方Rust API客户端

7个版本

0.1.8 2024年4月5日
0.1.7 2024年3月8日
0.1.6 2024年2月26日

#428 in 网页开发

Download history 15/week @ 2024-04-08 4/week @ 2024-05-20

每月587次下载

MIT许可协议

18KB
366

Facebook帖子上传的非官方Rust API客户端。

🪛 要求

  • 开发者页面上创建一个Facebook应用

  • 您的Facebook应用必须处于Live模式,以便其他人可以看到您的帖子。

  • Graph API资源管理器中获取ACCESS_TOKEN。您可以通过点击信息图标获取2个月的令牌。

  • 添加所需的权限以允许您的应用发布帖子。

    • pages_manage_engagement
    • pages_manage_posts
    • pages_read_engagement
    • pages_read_user_engagement
    • publish_video权限,如果您需要发布视频
  • 从您计划发布帖子的页面中获取PAGE_ID。

  • 更多有用信息可在官方Facebook API文档中找到,当前版本v19.0。

🪧 使用

帖子

use fb_poster::*;
use anyhow::{Ok, Result};

const ACCESS_TOKEN: &str = "YOUR_ACCESS_TOKEN";
const PAGE_ID: &str = "YOUR_PAGE_ID";


#[tokio::main]
async fn main() -> Result<()> {
    // Bring your secrets into a scope
    let secrets = Secrets::new(ACCESS_TOKEN, PAGE_ID);

    
    let message = "Your message".to_string();
    let link = "https://your_link".to_string();

    // Build a body for a request
    let body = Post::new(secrets)
    .with_message(message)
    .with_link(link);

    // Sending and get repsonse
    body.send().await?;

    Ok(())
}

照片

use fb_poster::*;
use anyhow::{Ok, Result};

const ACCESS_TOKEN: &str = "YOUR_ACCESS_TOKEN";
const PAGE_ID: &str = "YOUR_PAGE_ID";


#[tokio::main]
async fn main() -> Result<()> {
    // Bring your secrets into a scope
    let secrets = Secrets::new(ACCESS_TOKEN, PAGE_ID);

    let path = "/path/to/photo.png".to_string();

    // Build a body for a request
    let body = Photo::new(secrets, path);

    // Sending and get repsonse
    body.send(&secrets).await?;

    Ok(())
}

视频

use fb_poster::*;
use anyhow::{Ok, Result};

const ACCESS_TOKEN: &str = "YOUR_ACCESS_TOKEN";
const PAGE_ID: &str = "YOUR_PAGE_ID";


#[tokio::main]
async fn main() -> Result<()> {
    // Bring your secrets into a scope
    let secrets = Secrets::new(ACCESS_TOKEN, PAGE_ID);


    let path = "/path/to/video".to_string(); // or url for .hosted_video()
    let title = "Title".to_string();
    let description = "Description".to_string();
    let thumb = "path/to/thumb".to_string();

    // Build a body for a request
    let body = Video::new(secrets)
    .local_video(path)
    .with_title(title)
    .with_description(description)
    .with_thumbnail(thumb)


    // Sending and get repsonse
    body.send().await?;

    Ok(())
}

reels

use fb_poster::*;
use anyhow::{Ok, Result};

const ACCESS_TOKEN: &str = "YOUR_ACCESS_TOKEN";
const PAGE_ID: &str = "YOUR_PAGE_ID";


#[tokio::main]
async fn main() -> Result<()> {
    // Bring your secrets into a scope
    let secrets = Secrets::new(ACCESS_TOKEN, PAGE_ID);


    let path = "/path/to/video".to_string(); // or url for .hosted_video()
    let title = "Title".to_string();
    let description = "Description".to_string();
    let thumb = "path/to/thumb".to_string();

    // Build a body for a request
    let body = Reels::new(secrets)
    .local_video(path)
    .with_description(description)

    // Sending and get repsonse
    body.send().await?;

    Ok(())
}

✅ 功能

  • 帖子
    • 带消息
    • 带链接
  • 照片
    • 带消息

非可恢复上传(视频限制为1GB 20分钟)

  • 视频

    • 本地视频
    • 托管视频
    • 带标题
    • 带描述
    • 带缩略图
  • reels

    • 本地Reels
    • 托管Reels
    • 带描述

依赖关系

~6–17MB
~239K SLoC