2012-06-07 3 views
0

Я пытаюсь интегрировать чат facebook в наше мобильное приложение Flash/AIR, и использую XIFF для материала XMPP. Конечно, мне пришлось изменить некоторые файлы для нового API Facebook, который использует access_token вместо sig и secret.Сообщения в чате Facebook «не разрешены», хотя предоставляется «xmpp_login»

Для тех, кто знаком с xiff/привкусом API, вот как я установить соединение:

XFacebookPlatform.setFacebookSessionValues(AppData.FACEBOOK_APP_ID, AppData.getInstance().getFBSession().accessToken); 
XMPPConnection.registerSASLMechanism("X-FACEBOOK-PLATFORM", XFacebookPlatform); 

var con :XMPPConnection = new XMPPConnection(); 
con.server = "chat.facebook.com"; 
con.useAnonymousLogin = true; 
con.connect(XMPPConnection.STREAM_TYPE_STANDARD); 

.

В принципе, я добраться до точки, где я ответить на вызов с тем, что ИМО должна быть правильный формат:

var responseMap:Dictionary = new Dictionary(); 
responseMap.api_key = fb_api_key; 
     responseMap.call_id = 0; 
     responseMap.method = incomingChallengeMap.method; 
     responseMap.nonce = incomingChallengeMap.nonce; 
     responseMap.access_token = user_access_token; 
     responseMap.v = "1.0"; 

     var challengeResponse:String = "api_key=" + responseMap.api_key; 
     challengeResponse += "&call_id=" + responseMap.call_id; 
     challengeResponse += "&method=" + responseMap.method; 
     challengeResponse += "&nonce=" + responseMap.nonce; 
     challengeResponse += "&access_token=" + responseMap.access_token; 
     challengeResponse += "&v=" + responseMap.v; 
     challengeResponse = Base64.encode(challengeResponse); 

.

Ответ передается, но в ответ я получаю следующее:

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> 
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/> 

Это звучит как я не разрешила «xmpp_login», но я сделал. Я проверил, что через Graph API explorer, и по той же access_token показывает:

{ 
"data": [ 
    { 
    "installed": 1, 
    "xmpp_login": 1, 
    "user_online_presence": 1, 
    "friends_online_presence": 1 
    } 
] 
} 

Это должно быть более чем достаточно, я думаю.

Но все же я получаю «неавторизованный» отказ. Любые идеи, что пошло не так здесь?

ответ

1

Смешные достаточно, проблема была эта строка:

var con :XMPPConnection = new XMPPConnection(); 

, который должен быть заменен на этой линии:

var con :XMPPTLSConnection = new XMPPTLSConnection(); 

Вот так. Чат в facebook аутентифицируется только с помощью TLS-соединения.

.

Хотя это имеет смысл, то сообщение об ошибке

<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> 
<not-authorized xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/> 

является очень в заблуждение здесь, как это означает, что что-то с правами было бы неправильно.

Смежные вопросы