Facebook-чат - аутентификация X-FACEBOOK-PLATFORM
Я хочу построить XMPP-клиент на Android, у меня он отлично работает с аутентификацией с использованием Digest-MD-5, однако, когда я пытаюсь преобразовать его в X-FACEBOOK-PLATFORM, он продолжает отказывать.
2 ответа
Поэтому в основном аутентификация X-FACEBOOK-PLATFORM использует только часть токена доступа. Это называется ключом сеанса.
Маркер доступа отделяется "|" символов, поэтому вы разделяете токен доступа и берете только те символы, которые находятся в центре. Обратитесь ниже.
** * *** | 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");
Я никогда не использовал чат FB для работы с моим appSecret, но вместо этого использовал sessionSecret. Вы можете получить его, используя старый REST API.
http://developers.facebook.com/docs/reference/rest/auth.promoteSession/
Таким образом, вы можете сохранить свой appSecret в секрете. Также стоит отметить, что аутентификация X-FACEBOOK-PLATFORM редко успешна с первой попытки, но обычно требует 3-6 повторных попыток. Бьет меня, почему, хотя, поскольку я использую тот же ключ сеанса и секрет..