相关疑难解决方法(0)

整合Facebook聊天

我已经编写了一个程序来集成在C#中的Facebook用户聊天,但是我总是<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>在将响应发送到服务器之后得到.

我检查了API密钥和App秘密,两者都是正确的.看起来我将一些错误的参数传递给服务器.

这是我的代码.

private void GetDetailsButton_Click(object sender, EventArgs e)
{
     TcpClient FacebookClient = new TcpClient();
     FacebookClient.Connect("chat.facebook.com", 5222);
     NetworkStream myns = FacebookClient.GetStream();

     string xml = "<?xml version='1.0'?>" +
     "<stream:stream " +
     "id='1' " +
     "to='chat.facebook.com' " +
     "xmlns='jabber:client' " +
     "xmlns:stream='http://etherx.jabber.org/streams' " +
     "version='1.0' >";

     StreamWriter mySw = new StreamWriter(myns);
     mySw.WriteLine(xml);  //sending initial request
     mySw.Flush();

     byte[] serverResponseByte = new byte[1024];
     int myBytesRead = 0;
     StringBuilder myResponseAsSB = new StringBuilder();

     //reading response from the server to see the supported …
Run Code Online (Sandbox Code Playgroud)

c# facebook xmpp x-facebook-platform

16
推荐指数
3
解决办法
6810
查看次数

如何使用Smack API使用AccountManager的身份验证令牌对Google Talk进行身份验证?

此问题类似于:使用authToken对Google Talk(XMPP,Smack)进行身份验证

  1. 我有android.accounts.AccountManager类及其获取Google帐户身份验证令牌的方法:

    public AccountManagerFuture<Bundle> getAuthToken (Account account,
           String authTokenType, Bundle options, Activity activity,
           AccountManagerCallback<Bundle> callback, Handler handler)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我知道如何准备身份验证XML:

    jidAndToken ="\0" + UTF8(YOURUSERNAME@gmail.com) + "\0" + Auth
    
    Run Code Online (Sandbox Code Playgroud)

    (其中"\ 0"旨在是一个值为零的单个八位字节).在最初的SASL auth中使用它:

    <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' 
          mechanism='X-GOOGLE-TOKEN'>Base64(jidAndToken)</auth>
    
    Run Code Online (Sandbox Code Playgroud)


但是我无法将其与Smack API集成,就像有人在Facebook聊天一样:XMPP与Java Asmack库支持X-FACEBOOK-PLATFORM

有人能帮我吗?

android xmpp smack

8
推荐指数
2
解决办法
2506
查看次数

如何为Facebook创建XMPP聊天客户端?

我正在为FACEBOOK创建XMPP客户端.我为gmail做了这个,现在我必须为FaceBook创建相同的.我搜索了很多,因为这有一些代码,我仍然得到这种类型的错误Not connected to serverservice-unavailable(503)

在这里,我正在分享我所做的代码.

public class ClientJabberActivity extends Activity {

ArrayList<String> m_discussionThread;
ArrayAdapter<String> m_discussionThreadAdapter;
XMPPConnection m_connection;
private Handler m_handler;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    m_handler = new Handler();

    try {
        initConnection();
    } catch (XMPPException e) {
        e.printStackTrace();
    }

    final EditText recipient = (EditText) this.findViewById(R.id.recipient);
    final EditText message = (EditText) this.findViewById(R.id.message);
    ListView list = (ListView) this.findViewById(R.id.thread);

    m_discussionThread = new ArrayList<String>();
    m_discussionThreadAdapter = new ArrayAdapter<String>(this,
            R.layout.multi_line_list_item, m_discussionThread);
    list.setAdapter(m_discussionThreadAdapter);

    Button send = (Button) this.findViewById(R.id.send); …
Run Code Online (Sandbox Code Playgroud)

android facebook xmpp

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

使用X-FACEBOOK-PLATFORM SASL身份验证进行Facebook聊天身份验证

我正在使用X-FACEBOOK-PLATFORM SASL认证机制处理facebook聊天认证.

我正在形成用户和密码,如facebook开发人员论坛和stackoverflow问题中所述.

关键是如果我使用application_secret作为密码我可以登录,但根据stackoverflow问题(下面的链接),它应该是从旧的rest api方法auth.promoteSession生成的会话

我想使用旧的rest api方法,以避免在我们的桌面应用程序jar中分发application_secret.

所以问题是,你是如何设法使用auth.promoteSession登录的?

我已阅读以下帖子,这些帖子非常有帮助:

http://community.igniterealtime.org/message/205739#205739
XMPP与Java Asmack库支持X-FACEBOOK-PLATFORM

我正在使用来自igniterealtime帖子的SASLXFacebookPlatformMechanism.java类,它已经注册了correclty.

我有xmpp_login和offline_access permisions.我已经禁用了删除过时的Auth方法,所以我可以调用旧的rest api方法,在这种情况下:auth.promoteSession我也在使用客户端流认证到facebook.

因此,使用application_secret作为密码,我得到:

<stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features>
<challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dmVyc2lvbj0xJm1ldGhvZD1hdXRoLnhtcHBfbG9naW4mbm9uY2U9NEIxRUQzNTA5MTQ5MDQxRTE4N0QyNTA0NTUzNjBDQjc=</challenge>
<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用auth.promoteSession返回的值,我得到:

<stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>X-FACEBOOK-PLATFORM</mechanism><mechanism>DIGEST-MD5</mechanism></mechanisms></stream:features>
<challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dmVyc2lvbj0xJm1ldGhvZD1hdXRoLnhtcHBfbG9naW4mbm9uY2U9MzhFQkUxOTUxNENGRUU4ODc2NzRDREQ0RjhBMUQ0QjI=</challenge>
<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-authorized/></failure>
Run Code Online (Sandbox Code Playgroud)

java facebook chat xmpp smack

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

标签 统计

xmpp ×4

facebook ×3

android ×2

smack ×2

c# ×1

chat ×1

java ×1

x-facebook-platform ×1