在 Android 中将 Facebook 聊天与 Asmack API 集成

2023-12-19

我尝试按照中的建议实施聊天支持这个博客 http://davanum.wordpress.com/2008/12/29/updated-xmpp-client-for-android/.

目前,我正在使用以下代码来实现聊天界面。

Java代码


我已经检查了所有代码蜜蜂项目 http://beem-project.com/并找到了连接Facebook聊天API的解决方案。

在 Android 中实现 Facebook 聊天 API 的步骤:

  1. 首先我们必须实施记住TrustManager https://github.com/ge0rg/MemorizingTrustManager现有项目中的库项目。

    => 为此,您必须在现有项目中复制以下三个文件

    • MemorizingTrustManager/src/de/duenndns/ssl/MTMDecision.java
    • MemorizingTrustManager/src/de/duenndns/ssl/MemorizingActivity.java
    • MemorizingTrustManager/src/de/duenndns/ssl/MemorizingTrustManager.java

    => 并添加以下值值/string.xml

    <resources>
        <string name="mtm_accept_cert">Accept Unknown Certificate?</string>
        <string name="mtm_decision_always">Always</string>
        <string name="mtm_decision_once">Once</string>
        <string name="mtm_decision_abort">Abort</string>
        <string name="mtm_notification">Certificate Verification</string>
    </resources>
    
  2. 第二步,代替使用SASL认证例如X-FACEBOOK 平台, 您可以使用以下代码连接 Facebook 并使用您的Facebook Jabber ID([电子邮件受保护] /cdn-cgi/l/email-protection)

    public void connectToFb() throws XMPPException {
    
    ConnectionConfiguration config = new ConnectionConfiguration("chat.facebook.com", 5222);
    config.setSASLAuthenticationEnabled(true);
    config.setSecurityMode(SecurityMode.required);
    config.setRosterLoadedAtLogin(true);
    config.setTruststorePath("/system/etc/security/cacerts.bks");
    config.setTruststorePassword("changeit");
    config.setTruststoreType("bks");
    config.setSendPresence(false);
    try {
        SSLContext sc = SSLContext.getInstance("TLS");
        sc.init(null, MemorizingTrustManager.getInstanceList(this), new java.security.SecureRandom());
        config.setCustomSSLContext(sc);
    } catch (GeneralSecurityException e) {
        Log.w("TAG", "Unable to use MemorizingTrustManager", e);
    }
    XMPPConnection xmpp = new XMPPConnection(config);
    try {
        xmpp.connect();
        xmpp.login("facebookusername", "****"); // Here you have to used only facebookusername from [email protected] /cdn-cgi/l/email-protection
        Roster roster = xmpp.getRoster();
        Collection<RosterEntry> entries = roster.getEntries();
        System.out.println("Connected!");
        System.out.println("\n\n" + entries.size() + " buddy(ies):");
        // shows first time onliners---->
        String temp[] = new String[50];
        int i = 0;
        for (RosterEntry entry : entries) {
            String user = entry.getUser();
            Log.i("TAG", user);
        }
    } catch (XMPPException e) {
        xmpp.disconnect();
        e.printStackTrace();
    }
    }
    

最后,如果您在LogCat视图中获取了您的Facebook帐户的所有好友列表,那么您可以使用以下方法实现简单的Facebook聊天本教程 http://davanum.wordpress.com/2008/12/29/updated-xmpp-client-for-android/.

UPDATE:我还在开发可用作 Facebook Messenger 的示例应用程序,并将很快发布在 GitHub 上。

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

在 Android 中将 Facebook 聊天与 Asmack API 集成 的相关文章

  • Android 中用虚拟键盘捕捉按键按下的情况?

    使用物理键盘 您可以使用按键监听器 http developer android com reference android text method KeyListener html 就像是 myEditText setOnKeyListe
  • 如何在 Android 中使用 Assets 中预加载的 SQLite 数据库

    我想用preloaded database在我的应用程序中意味着尝试在安装 apk 时获取数据库 以便可以使用已保存在其中的数据 我复制了 成分 db 文件位于资产文件夹中 并使用以下代码 但这会出现错误 从资源文件复制数据库时出现问题 我
  • 将正确的上下文传递给 greendao 的 OpenHelper 构造函数

    如果我理解正确的话 在使用数据库时 我必须执行以下操作 DaoMaster OpenHelper helper new DaoMaster OpenHelper this test db null Override public void
  • XMPP 多用户聊天设置群聊头像

    我正在开发一个带有聊天功能的 iOS 应用程序 我正在为该应用程序使用 XMPP 在XMPP多用户聊天中 是否有功能可以像我们在whatsapp中那样为会议室设置头像或群组图像 我检查过XEP 0045 http xmpp org exte
  • 如何获取.so文件的依赖项列表?

    假设我有libFoo so为 android arm 编译 我不确定它链接到什么STL实现 有options http developer android com intl ru ndk guides standalone toolchai
  • Retrofit-2 内容类型问题

    我的 Api 接受 Content Type application json 作为标头 我按照改造文档中所述完美设置了标题 Headers Content Type application json POST user classes C
  • Android 应用被 Google Play 拒绝

    我最近向 Google Play 商店提交了一个 Android 应用程序 但收到一条消息说我的应用程序已被拒绝 我不确定问题是什么 也找不到确切的解决方案 拒绝原因 违反了禁止行为条款 内容政策 经过定期审核后 我们确定您的应用程序支持
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 如何以编程方式断开拨出呼叫

    我使用以下代码以编程方式断开呼叫 但它不起作用 private void callDisconnect try TelephonyManager manager TelephonyManager this getSystemService
  • Android:应用内计费V3超时返回哪个响应码?

    出现网络超时情况时 Google Play 应用内结算服务 ice er V3 将返回哪些响应状态代码 它的所有功能都是统一的吗 我将在这里描述我的发现 我通过拔掉主机插头 在安装了全功能 GP GP Store V3 10 10 GP S
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • Facebook PHP SDK - 如何获取访问令牌?

    我正在尝试从我的应用程序在用户的 Facebook 墙上发帖 用户授予应用程序在他的墙上发布的权限 并且我在数据库中有用户ID 我需要自动发送帖子 而无需用户再次登录 我的代码是 try require once dirname FILE
  • 如何在进入新活动之前终止线程和处理程序

    大家好 在我尝试清理处理程序时 这段代码可能有点混乱 因为我一直在尝试追踪崩溃发生的位置 我有一个对话框活动 显示密码输入 进度条由线程和处理程序动画显示 似乎当我试图查看进度条是否完成并尝试终止线程时 当我尝试进入新活动时 我这样做的方式
  • JavaDoc 在 Android 项目中不起作用

    我在 Ubuntu 10 04 上使用 Eclipse 3 5 2 进行 Android 开发 我安装了 来自 Ubuntu 存储库的 Sun JDK Eclipse 3 5 2 经典 来自 eclipse org 解压到 opt ecli
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • Nexus 7 (2013) 和 Win 7 64 - 尽管检查了许多论坛和在线资源,仍无法安装 USB 驱动程序

    我正在尝试设置 Nexus 7 2013 进行调试 但我在安装 USB 驱动程序的步骤中陷入困境 到目前为止 这是我尝试过的 采取的步骤 在 Nexus 7 2013 上打开调试模式 连接设备至 PC 下载 Google USB 驱动程序于
  • NoClassDefFoundError:无法解析:Landroid/support/v7/appcompat/R$styleable

    新手尝试完成 Google 提供的我的第一个应用程序教程 在这个致命异常的过程中 我确实导入了很多随机包来消除许多事情的 无法解析 错误 例如 ActionBarActivity EditText Fragment LayoutInflat
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A

随机推荐

  • 架构 `boxfuse-dev-db` 包含到版本 10 的迁移失败!迁移在本地有效,但在生产或开发中均无效

    我正在开发一个使用 Springboot Boxfuse 和 Flyway 的 Web 应用程序 我创建了以下迁移 V10 UpdateProperty sql 其中包含以下内容 ALTER TABLE property MODIFY CO
  • ES 计算为列产生不可靠的结果(反向风险):1

    我不断收到此错误 ES calculation produces unreliable result inverse risk for column 1使用时的消息DEoptim 也许我忽略了一些事情 所以我需要一些帮助来解决这个问题 我在
  • 三星 Galaxy S4 和 Phonegap 问题

    我正在使用 Phonegap 编写一个应用程序 该应用程序包括使用 HTML5 的画布 当我在 Eclipse 的 Android 模拟器上运行该应用程序时 一切正常 缓慢但正常 当我连接 Galaxy S4 并运行应用程序时 它会加载并很
  • 如何在Cesium.js中绘制自定义动态广告牌

    我目前正在使用铯进行地图应用程序 并且我需要为我正在绘制的每个项目提供状态指示器 例如 如果我正在绘制的项目是一架飞机 那么我需要有燃料状态指标 我无法使用 Cesium 的绘图工具来执行此操作 因为它们是使用地理位置绘制的 但我需要我的状
  • Android Studio 3.0子模块编译失败

    应用程序级别构建 gradle 依赖项 devCompile project path mymodule configuration devRelease proCompile project path mymodule configura
  • NHibernate MappingException:无法编译映射文档

    在我的开发 Web 应用程序上 NHibernate 运行得很好 当我预编译和部署站点时 在创建 SessionFactory 时收到 MappingException 以下是跟踪中的一些信息 NHibernate Cfg Environm
  • Struts 和 Spring 一起吗?

    我对 Struts 和 Spring 都很陌生 我需要知道如何访问 Struts ActionForm 中的 Spring 服务 即使是指向正确方向的指针也会受到赞赏 从 struts 1 ActionForm 类中 您将需要 WebApp
  • 带回形针的 Rails api

    我有 Rails api 和简单的回形针模型 def create photo Photo new photo params if photo save render json photo status created location p
  • android ndk 错误“没有这样的文件或目录”?

    我的 include 文件夹中有一些头文件 这是 Android mk 文件内容 include call all subdir makefiles LOCAL PATH call my dir include CLEAR VARS LOC
  • 是否可以将控制台输出重定向到变量?

    在 R 中 我想知道是否可以暂时将控制台的输出重定向到变量 附注网上有一些关于如何使用的示例sink 将输出重定向到文件名 但我找不到任何显示如何重定向到变量的内容 附注在实践中 这很有用 因为我需要从 R 中的一些内置函数打印出默认控制台
  • 如何使用 XAMPP 的自签名证书来处理使用 cURL 的 HTTPS 请求?

    我安装了 XAMPP 需要测试一些 HTTPS 请求 首先 我尝试配置 XAMPP 以便可以使用 HTTPS 请求 这就是我所做的 1 在php ini文件中 我取消了注释openssl module 2 在httpd conf文件中 我取
  • 如何在 Eclipse 中设置命令行参数?

    我在 Eclipse 中设置命令行参数时遇到问题 我在互联网上搜索过 但找不到任何可以帮助人们使用隐形文本框的东西 我什至尝试按帮助按钮 但没有任何反应 如何在 Eclipse 中为 Java 项目设置命令行参数 Eclipse 的屏幕截图
  • 在 TypeScript 中将对象键/值的映射强类型化为具有相同键但不同值的对象

    我通常需要获取一个对象并生成一个具有相同键但具有从 KVP 到某些映射的值的新对象T JavaScript 的实现很简单 Object map obj fn gt Object fromEntries Object entries obj
  • 如何对 ES6 映射进行 JSON.stringify?

    我想开始使用ES6 Map https developer mozilla org en US docs Web JavaScript Reference Global Objects Map而不是 JS 对象 但我被阻止了 因为我不知道如
  • 如何在 TabPage 标题旁边显示 ErrorProvider 错误图标?

    Edit 这不是重复的TabControl C 中的图标 如何实现 https stackoverflow com questions 3663603 icons in tabcontrol c sharp how 问题是关于向选项卡页面添
  • JVM 崩溃后的 Spring Batch

    JVM 崩溃后如何重新启动作业 当我的 JVM 崩溃或系统出现故障时 我正在运行大量在 Spring Batch 框架中实现的作业 失败后如何重新启动这些作业 您需要在重新启动 正在运行 的作业之前将其标记为失败 如下所示 List
  • GetVersionEx Windows 10 检测为 Windows 8 [重复]

    这个问题在这里已经有答案了 我正在使用 GetVersionEx 来获取操作系统 但我不知道为什么它将 Windows 10 报告为 Windows 8 我知道它已被弃用 但我找不到其他解决方案 switch osinfo dwMajorV
  • 是否有针对 .NET 实现的 WebSocket 客户端? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何使证书中的私钥不可导出C#

    因此 您将在下面找到我的代码 该代码创建带有私钥的自签名证书 它存储在用户存储中 现在 当我使用 mmc 工具时 我可以从证书中导出私钥吗 我认为这是您在创建证书时必须显式添加的标志 所以我想知道的是 如何更改此代码以使私钥不再可通过 mm
  • 在 Android 中将 Facebook 聊天与 Asmack API 集成

    我尝试按照中的建议实施聊天支持这个博客 http davanum wordpress com 2008 12 29 updated xmpp client for android 目前 我正在使用以下代码来实现聊天界面 Java代码 我已经