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 повторных попыток. Бьет меня, почему, хотя, поскольку я использую тот же ключ сеанса и секрет..

Другие вопросы по тегам