如何使用 FB API 从 Android 应用程序在 Facebook 上发布链接?

2023-12-09

我浏览了整个互联网,但找不到如何使用 fb sdk\api 在 Facebook 墙上发布特定图片的链接。

我知道这是我需要使用的代码的一部分:

Facebook facebookClient = new Facebook("fb_App_id");

Bundle parameters = new Bundle();
parameters.putString("message", "Test Photo");
parameters.putString("link", "https://www.google.com");
parameters.putString("picture", "link to some pictrue");
facebookClient.dialog(MainActivity.this, "stream.publish", parameters, new DialogListener() {

@Override
public void onFacebookError(FacebookError e) {
    // TODO Auto-generated method stub

}

@Override
public void onError(DialogError e) {
    // TODO Auto-generated method stub

}

@Override
public void onComplete(Bundle values) {
    // TODO Auto-generated method stub

}

@Override
public void onCancel() {
    // TODO Auto-generated method stub

}
});

当我尝试使用此代码时,出现“未找到源”错误。 我认为我错过了连接\验证步骤......

我怎样才能让它发挥作用?

另一件事:如果我在我在 Google Play 上分享的个人应用程序中使用 FB SDK,并且该应用程序是免费的,但上面有广告,那么在我的应用程序中使用 FB SDK 是否合法?


最后我找到了怎么做。

您需要声明这两个:

Facebook facebookClient;    
SharedPreferences mPrefs;

在 onCreate 函数中,我使用 facebook AppID 初始化 facebookClient。

提供 facebook 共享午餐的类必须是 Activity

我在活动中添加了三个功能:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    facebookClient.authorizeCallback(requestCode, resultCode, data);
}

public void loginToFacebook() {
    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        facebookClient.setAccessToken(access_token);
    }

    if (expires != 0) {
        facebookClient.setAccessExpires(expires);
    }

    if (!facebookClient.isSessionValid()) {
        facebookClient.authorize(this, new String[] { "publish_stream" }, new DialogListener() {

            @Override
            public void onCancel() {
                // Function to handle cancel event
            }

            @Override
            public void onComplete(Bundle values) {
                // Function to handle complete event
                // Edit Preferences and update facebook acess_token
                SharedPreferences.Editor editor = mPrefs.edit();
                editor.putString("access_token", facebookClient.getAccessToken());
                editor.putLong("access_expires", facebookClient.getAccessExpires());
                editor.commit();

                postToWall();
            }

            @Override
            public void onError(DialogError error) {
                // Function to handle error

            }

            @Override
            public void onFacebookError(FacebookError fberror) {
                // Function to handle Facebook errors

            }

        });
    }
}

private void postToWall() {
    Bundle parameters = new Bundle();
    parameters.putString("name", "Battery Monitor");
    parameters.putString("link", "https://play.google.com/store/apps/details?id=com.ck.batterymonitor");
    parameters.putString("picture", "link to the picture");
    parameters.putString("display", "page");
    // parameters.putString("app_id", "228476323938322");

    facebookClient.dialog(MainActivity.this, "feed", parameters, new DialogListener() {

        @Override
        public void onFacebookError(FacebookError e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onError(DialogError e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onComplete(Bundle values) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onCancel() {
            // TODO Auto-generated method stub
        }
    });
}

最后:

        ImageButton facebookButton = (ImageButton) findViewById(R.id.button_FacebookShare);
        facebookButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                loginToFacebook();

                if (facebookClient.isSessionValid()) {
                    postToWall();
                }
            }
        });

它会自动登录 Facebook,然后显示 Facebook 分享\发布对话框。 代码取自于此tutorial

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 FB API 从 Android 应用程序在 Facebook 上发布链接? 的相关文章

随机推荐

  • 在 XSD 中哪里放置 xs:unique 约束?

    我正在使用 XSD 进行 XML 验证 我想为以下添加唯一值约束input元素 我有这样的 XML 格式
  • PyAudio 一次播放多个声音

    如何使用 PyAudio 将两种声音混合为一种 我浏览了整个互联网 但没有人回答这个问题 我也在考虑使用 audiolab 或 swMixer 但它们不支持 Python 3 4 我正在考虑将它们的字节字符串转换为 numpy 数组 将其与
  • fread 和带有尾部反斜杠的列

    我在 fread 使用 作为目录分隔符读取一列目录路径时遇到问题 问题是尾随目录分隔符在 fread 中引发错误 对于下面的 csv 文件示例 file size windows user 123 fread 和 read csv 都同意并
  • Sqlplus打印结果两次并带有空行

    我写shell脚本并想使用sqlplus 当我写 bin bash result sqlplus s user pass DB lt lt EOF set trimspool on set linesize 32000 SET SPACE
  • 如何在 C#.NET 中创建控件数组?

    我有一个包含几个标准控件 文本框 按钮等 的表单 我想将某些控件分组到集合中 以便我可以在任何给定时间启用和禁用它们 而无需显式设置每个控件 这样做的语法是什么 这是一些伪代码来展示我想要做的事情 Control ControlCollec
  • 限制所有 Linux 命令的输出

    我正在寻找一种方法来限制 Linux 中所有命令行程序产生的输出量 并且最好在限制时告诉我 我正在使用一台显示器有延迟的服务器 有时我会不小心运行一个向终端输出大量文本的命令 例如cat在一个大文件上或ls在包含许多文件的目录上 然后我必须
  • DIV 垂直浮动 DIV 从上到下按行排列

    我试图在容器内从上到下垂直定位 DIV 容器的垂直高度应限制为 500 像素 所有不符合此限制的 DIV 都应浮动到下一行 div div div div
  • 如何读取jqgrid中的userData?

    我需要通过userData to jqgrid 但找不到任何如何执行此操作的示例 这是我的尝试 从服务器发送 total 25 page currentpage userData foo bar rows myRows 在 jqgrid 中
  • 在windows后台运行bat文件

    我需要在 Windows 后台运行一个 bat 文件 我尝试过使用START命令 问题是 我远程连接到这台机器 如果我注销 那么该进程就会被终止 即使我从远程计算机注销后 有什么方法可以保持 bat 文件运行吗 提前致谢 Srvany ht
  • 您最喜欢的 C# 扩展方法是什么? (codeplex.com/extensionoverflow)

    Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 让我们列出一个答案列表 您可以在其中发布您的优秀和最喜欢的答案扩展方法 要求是必须发布完整的代码以及示例和如何使用它的解释 基于对
  • SQL Server:更新以仅匹配和替换确切的单词

    我想匹配一个确切的单词并将其替换为另一个单词 这是我正在使用的 SQL Server 查询 UPDATE BODYCONTENT SET BODY CAST REPLACE CAST BODY AS NVARCHAR MAX Test pr
  • 使用 HtmlAgilityPack 解析 html 文档

    我正在尝试通过 HtmlAgilityPack 解析以下 html 片段 td width 50 valign top table style font size 48 border 0 cellpadding 2 cellspacing
  • 如何避免 ASP.NET 应用程序中的 SQL 注入攻击?

    我需要避免在 ASP NET 应用程序中容易受到 SQL 注入的攻击 我怎样才能做到这一点 尽管您的问题非常笼统 但始终适用一些规则 使用参数化查询 SqlCommand with SqlParameter 并将用户输入放入参数中 不要根据
  • R markdown / bookdown - 如何切换到文章?

    输入数据 我准备了一个示例 Rmd 文件 其中引用了图形 表格和方程 设置为输出 bookdown pdf document2 它可以无错误地编译为 PDF 我把它放在保管箱上 https www dropbox com sh zmu0a4
  • Dapper.NET 如何在内部与 .Count() 和 SingleOrDefault() 一起工作?

    尽管我了解 ORM 和 DAL 并且之前已经使用 NHibernate 实现了 DAL 但我还是 Dapper 的新手 查询示例 string sql SELECT FROM MyTable public int GetCount var
  • 是否可以在 JDK 1.7 上使用 GCM 和 BC?

    我正在尝试使用任何 AES GCM 变体进行 TLS 连接 根据我在文档中的理解 这应该是可能的 但我收到此错误 Caused by javax net ssl SSLHandshakeException Received fatal al
  • TestNG 使用 Spring @Transactional 进行多线程测试

    我正在使用 TestNG 来测试持久性 Spring 模块 JPA Hibernate 并使用 AbstractTransactionalTestNGSpringContextTests 作为基类 所有重要部分 Autowired Tran
  • 使用 std::string 失败信号和槽

    我的信号和插槽都有std string类型参数 我的信号位于 b 类中 插槽位于 A 类中 如果我将参数类型更改为 int 信号可以工作 但会失败并显示 std string 有关如何解决此问题的任何建议吗 这是我使用的代码 connect
  • 是否可以通过 App Store 分发 iPhone Web 应用程序?

    我所说的 Web 应用程序是指针对 iPhone 上的 Safari 的网站 可以 离线 运行 通过使用缓存清单文件 JavaScript 数据库 从主屏幕上的图标全屏运行 作为 Web 应用程序 一旦安装 用户体验就很好 因此不需要是本机
  • 如何使用 FB API 从 Android 应用程序在 Facebook 上发布链接?

    我浏览了整个互联网 但找不到如何使用 fb sdk api 在 Facebook 墙上发布特定图片的链接 我知道这是我需要使用的代码的一部分 Facebook facebookClient new Facebook fb App id Bu