标签: smack

XMPP与Java Asmack库支持X-FACEBOOK-PLATFORM

我正在尝试使用Smack库在Android上进行Facebook聊天.我已经从Facebook上阅读了聊天API,但我无法理解如何使用此库对Facebook进行身份验证.

任何人都可以指出我如何做到这一点?

更新:根据no.good.at.coding答案,我将此代码改编为Asmack库.一切正常,但我收到的是对登录的回复:未经授权.这是我使用的代码:

public class SASLXFacebookPlatformMechanism extends SASLMechanism
{

    private static final String NAME              = "X-FACEBOOK-PLATFORM";

    private String              apiKey            = "";
    private String              applicationSecret = "";
    private String              sessionKey        = "";

    /**
     * Constructor.
     */
    public SASLXFacebookPlatformMechanism(SASLAuthentication saslAuthentication)
    {
        super(saslAuthentication);
    }

    @Override
    protected void authenticate() throws IOException, XMPPException
    {

        getSASLAuthentication().send(new AuthMechanism(NAME, ""));
    }

    @Override
    public void authenticate(String apiKeyAndSessionKey, String host,
            String applicationSecret) throws IOException, XMPPException
    {
        if (apiKeyAndSessionKey == null || applicationSecret == null)
        {
            throw new …
Run Code Online (Sandbox Code Playgroud)

java android facebook xmpp smack

10
推荐指数
1
解决办法
1万
查看次数

如何使用Java的Smack API发送自定义XML数据包?

我正在使用Java中的Smack API连接到我的XMPP服务器.

我想发送一个这样的自定义消息包:

<message to="you@MyServer.com" type="chat" MYFIELD="custom stuff">
    <body> hi </body>
    <CUSTOM_STANZA A="..." B="..."> 
        C="..." 
        D="..."
    </CUSTOM_STANZA>
</message>
Run Code Online (Sandbox Code Playgroud)

我猜我创建了我自己的Packet,它在它的toXML()方法中返回了这个XML.但这似乎不起作用.

任何帮助,将不胜感激.

java xml xmpp smack

10
推荐指数
2
解决办法
1万
查看次数

如何使用smack api在android中进行语音/视频聊天

我们已经在我们的应用程序中使用jabber smack api进行聊天.

现在我们计划通过添加语音/视频聊天来升级我的应用程序.

我认为它可能通过使用jingle jabber smack但我没有得到任何api或示例代码在jave中为jingle.

任何人都可以帮助我.

android xmpp smack

10
推荐指数
1
解决办法
1万
查看次数

如何使用aSmack在Android设备上获取Openfire聊天记录?

我正在开发一个聊天应用程序,用户将与域专家的一个组成员聊天.用户使用我的Android应用程序和域专家使用spark web进行聊天.我制作了Openfire安装程序和Spark Web设置,并使用aSmack库开发了Android聊天应用程序.我的应用用户可以与域专家聊天.到目前为止一切都很好.现在,我想在Android设备上显示用户与任何或特定专家的聊天记录.浏览网页后,我可以为我的开放式服务器安装Monitoring Service插件,该服务器显示管理员端用户的聊天记录,如下所示.在此输入图像描述

现在我想在我的Android应用程序中展示这段历史,我该如何实现这一目标.任何建议,最受欢迎.我正朝着正确的方向前进吗?还是有简单的方法来完成我的工作?有关此聊天历史记录将存储在Open Fire数据库中的任何信息,以便我可以使用Web服务进行SQL查询和获取数据,这是非常感谢.

android chat xmpp smack asmack

10
推荐指数
1
解决办法
6700
查看次数

Android Studio上与Smack 4.1的XMPP连接

我试图通过https://github.com/igniterealtime/Smack与Smack 4.1.0 rc1进行XMPP连接

我遵循了这个指南:https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide导入Gradle.

源代码:

package com.example.xmpp_app;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

import org.jivesoftware.smack.AbstractXMPPConnection;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;

import java.io.IOException;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Create the configuration for this new connection
        XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
        configBuilder.setUsernameAndPassword("test@example.com", "password123");
        configBuilder.setResource("test");
        configBuilder.setServiceName("example.com");

        AbstractXMPPConnection connection = new XMPPTCPConnection(configBuilder.build());
        // Connect to the server
        try {
            connection.connect();
        } catch (SmackException e) …
Run Code Online (Sandbox Code Playgroud)

java android xmpp smack asmack

10
推荐指数
1
解决办法
2万
查看次数

如何使用Smack 4.2连接到ejabberd?

我已经更改了我的应用程序以使用Smack 4.2替换Smack 4.1

但是我在config.setServiceName()中遇到错误;

此方法的参数已从String更改为DomainBareJid.我不知道如何在这个新的Smack中使用DomainBareJid和setServiceName.

XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration
                .builder();
        config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);


        config.setServiceName("What should i put here?");


        config.setHost(serverAddress);
        config.setPort(5222);
        config.setDebuggerEnabled(true);
        connection = new XMPPTCPConnection(config.build());

        connection.setUseStreamManagement(true);
Run Code Online (Sandbox Code Playgroud)

如果我没有设置服务名称,那么我收到以下错误:

03-28 13:44:29.834: E/AndroidRuntime(7104): FATAL EXCEPTION: main
03-28 13:44:29.834: E/AndroidRuntime(7104): java.lang.RuntimeException: Unable to create service com.marothiatechs.cpm.MyService: java.lang.IllegalArgumentException: Must provide XMPP service name
03-28 13:44:29.834: E/AndroidRuntime(7104):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2715)
03-28 13:44:29.834: E/AndroidRuntime(7104):     at android.app.ActivityThread.access$1600(ActivityThread.java:153)
03-28 13:44:29.834: E/AndroidRuntime(7104):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351)
03-28 13:44:29.834: E/AndroidRuntime(7104):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-28 13:44:29.834: E/AndroidRuntime(7104):     at android.os.Looper.loop(Looper.java:137)
03-28 13:44:29.834: E/AndroidRuntime(7104):     at android.app.ActivityThread.main(ActivityThread.java:5289)
03-28 13:44:29.834: E/AndroidRuntime(7104):     at …
Run Code Online (Sandbox Code Playgroud)

android xmpp smack

10
推荐指数
1
解决办法
6530
查看次数

Smack 4.1推荐的ProGuard规则是什么?

在构建Android版本apk时,Smack 4.1有哪些适当的ProGuard规则?

目前,我正在使用来自aSmack github存储库上的README.asmack文件的aSmack 4.0.x中的规则,该存档过时(引用旧类名,用于4.0.x).我找不到任何适用于4.1.x的正确程序规则的参考,是否有人可以解释这一点?

proguard smack

10
推荐指数
1
解决办法
1404
查看次数

Smack"必须有本地(用户)JID设置"错误

无法理解为什么会出现此错误并且应用程序崩溃.

低于错误:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.studyboard/com.studyboard.ChatMessageActivity}: java.lang.IllegalArgumentException: Must have a local (user) JID set. Either you didn't configure one or you where not connected at least once
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2493)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2555)
       at android.app.ActivityThread.access$800(ActivityThread.java:176)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1437)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loop(Looper.java:194)
       at android.app.ActivityThread.main(ActivityThread.java:5576)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751)
Caused by java.lang.IllegalArgumentException: Must have a local (user) JID set. Either you didn't configure one or you where not connected at least once
       at org.jivesoftware.smack.filter.IQReplyFilter.<init>(IQReplyFilter.java:94)
       at org.jivesoftware.smack.AbstractXMPPConnection.createPacketCollectorAndSend(AbstractXMPPConnection.java:690) …
Run Code Online (Sandbox Code Playgroud)

android ejabberd smack

10
推荐指数
1
解决办法
1826
查看次数

在openfire中延迟群发消息

我使用Openfire(xmpp)服务器构建了一个聊天应用程序.一对一的人聊天工作正常,消息即时传递.但是当我们在组内发送消息时,第一条消息会被延迟,第二条消息会立即传递.

MultiUserChatManager groupChat =
          MultiUserChatManager.getInstanceFor(connection).getMultiUserChat("group_name");
groupChat.send("Message object");
Run Code Online (Sandbox Code Playgroud)

为什么第一条消息会被延迟?

MUC创作是

 MultiUserChatManager mchatManager = MultiUserChatManager.getInstanceFor(xmpptcpConnection);
      MultiUserChat mchat = mchatManager.getMultiUserChat(group);
      if (!mchat.isJoined()) {
        Log.d("CONNECT", "Joining room !! " + group + " and username " + username);
        boolean createNow = false;
        try {
          mchat.createOrJoin(username);
          createNow = true;
        } catch (Exception e) {
          Log.d("CONNECT", "Error while creating the room " + group + e.getMessage());
        }

        if (createNow) {

          Form form = mchat.getConfigurationForm();
          Form submitForm = form.createAnswerForm();

          List<FormField> formFieldList = submitForm.getFields();
          for (FormField formField : …
Run Code Online (Sandbox Code Playgroud)

android openfire smack

10
推荐指数
1
解决办法
419
查看次数

如何在XMPP中管理离线时发送的PubSub通知?

如何在PubSub中获取离线消息?使用Smack库.搜索后我找到了一个如下所示的答案:

// Create a pubsub manager using an existing XMPPConnection
PubSubManager mgr = PubSubManager.getInstanceFor(con);

// Get the node
LeafNode node = mgr.getNode("testNode");

List<? extends Item> items = node.getItems(100);
Run Code Online (Sandbox Code Playgroud)

node.getItems(100)返回最后100条消息,也可以在线和离线.

1)如何使用smack跟踪pubsub中的在线和离线消息?

2)是否可以使用smack在pubsub中获取未读消息计数?如果是,那么如何实现呢?

3)如何知道谁(发布者)在节点中发送此消息?

我刚从这里这里浏览了Smack和PubSub的文档,但没有找到与我的查询相关的解决方案.那么有人可以帮我解决这个问题吗?

xmpp publish-subscribe smack

10
推荐指数
1
解决办法
334
查看次数

标签 统计

smack ×10

android ×7

xmpp ×7

java ×3

asmack ×2

chat ×1

ejabberd ×1

facebook ×1

openfire ×1

proguard ×1

publish-subscribe ×1

xml ×1