Вызовы 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
хотя это не фактический ответ на ваш вопрос (поскольку он не включает 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: одно для веб-страницы / мобильных вызовов (флаг отключено) и один для вызовов на стороне сервера (флаг включен).