2010-09-14 14 views
0

Je veux construire un client XMPP sur Android, je l'ai fonctionne parfaitement avec l'authentification en utilisant Digest-MD-5, mais quand je tente de le convertir en X-FACEBOOK- PLATEFORME il continue d'échouer.Facebook chat - X-FACEBOOK-PLATFORM authentification

+1

Pouvez-vous extraire la partie pertinente de votre téléchargement dans le texte de votre question, s'il vous plaît? –

Répondre

3

Donc, fondamentalement, l'authentification X-FACEBOOK-PLATFORM n'utilise qu'une partie d'un jeton d'accès. C'est ce qu'on appelle la clé de session.

Le jeton d'accès est séparé par "|" caractères, de sorte que vous divisez le jeton d'accès et ne prenez que les caractères qui sont au centre. Voir ci-dessous.

** * *** | a681464febcefb8*- ** |* ** * **

long callId = new GregorianCalendar().getTimeInMillis()/1000L; 

      String sig = "api_key=" + apiKey 
          + "call_id=" + callId 
          + "method=" + method 
          + "nonce=" + nonce 
          + "session_key=" + sessionKey 
          + "v=" + version 
          + appSecret; 

      try { 
       sig = MD5(sig); 
      } 
      catch (NoSuchAlgorithmException e) { 
       throw new IllegalStateException(e); 
      } 

      String composedResponse = "api_key=" + URLEncoder.encode(apiKey, "utf-8") 
             + "&call_id=" + callId 
             + "&method=" + URLEncoder.encode(method, "utf-8") 
             + "&nonce=" + URLEncoder.encode(nonce, "utf-8") 
             + "&session_key=" + URLEncoder.encode(sessionKey, "utf-8") 
             + "&v=" + URLEncoder.encode(version, "utf-8") 
             + "&sig=" + URLEncoder.encode(sig, "utf-8"); 
0

Je ne me suis jamais FB chat fonctionne avec mon appSecret mais utilisé sessionSecret à la place. Vous pouvez l'obtenir en utilisant l'ancienne API REST.

http://developers.facebook.com/docs/reference/rest/auth.promoteSession/

De cette façon, vous pouvez garder votre appSecret comme un secret. Il vaut également la peine de noter que l'authentification X-FACEBOOK-PLATFORM réussit rarement au premier essai, mais nécessite généralement 3-6 tentatives. Beats moi pourquoi bien que j'utilise la même clé de session et secret ..