Вызовы API с сервера требуют аргумента доказательства appsecret

Я не могу делать запросы API с Android Facebook SDK или даже получить пользователя от обратного вызова входа-он всегда возвращает null.

в частности, с newMeRequest, я получаю следующее сообщение об ошибке:

{ "error": {
 "message": "API calls from the server require an appsecret_proof argument", 
 "type": "GraphMethodException", 
 "code": 100   } }

на самом деле, это кажется довольно очевидным, потому что флаг установлен в true в настройках приложения Facebook. Тем не менее, я знаю, что для мобильных sdks возможно делать запросы API без секрета. Однако, если я попытаюсь использовать токен доступа из currentSession в отладчике API графика Facebook ответ будет таким же, как и выше.

Я не знаю, связано ли это с новым Android Facebook SDK, но мой код в основном такой же, как в примерах. Вход в систему идет хорошо, и я получаю токен сеанса, но я не могу сделать никаких запросов API...

loginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() {
    @Override
    public void onUserInfoFetched(GraphUser user) {
        graphUser = user;
    }
});


Request.newMeRequest(currentSession, new Request.GraphUserCallback() {
    @Override
    public void onCompleted(GraphUser user, Response response) {
    }
    }
}).executeAsync();

4 ответов


единственный способ, которым я смог заставить его работать, был настройками No на App Secret proof for API calls в настройки приложения facebook.

однако это исправление, а не решение, так как я не смог выполнить запрос в параметре Yes (как это возможно в iOS Facebook sdk).


вам нужно добавить параметр "appsecret_proof" в ваш запрос, содержащий хэш "sha256" accessToken и appSecret

https://developers.facebook.com/docs/graph-api/securing-requests


нужно запретить Require App Secret в facebook приложение предварительной настройки.


хотя это не фактический ответ на ваш вопрос (поскольку он не включает Android SDK), кажется, что, начиная с марта 2018 года, есть еще некоторые вопросы, касающиеся appsecret_proof и звонки с веб-страницы (Javascript) / и, возможно, мобильных (не уверен в этом) клиентов.

отчет об ошибке Facebook (февраль 2018) - проблема появилась

отчет об ошибке Facebook (октябрь 2016)

отчет об ошибке Facebook (февраль 2015)

то есть, для приложения с Требуется App Secret включено App Dashboard > Settings > Advanced > Security > Require App Secret, кажется, что нельзя выполнять вызовы API из Javascript без передачи appsecret_proof - на момент написания (март 2018).

Quick "fix" - отключить флаг. В зависимости от требований, можно также выбрать два приложения Facebook: одно для веб-страницы / мобильных вызовов (флаг отключено) и один для вызовов на стороне сервера (флаг включен).