it-roy-ru.com

Для вызовов API с сервера требуется аргумент appsecret_proof

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

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

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

На самом деле, это кажется довольно очевидным, потому что флаг установлен в true в настройках приложения Facebook. Тем не менее, я знаю, что для мобильных SDKS возможно делать запросы API без секрета. Однако если я попытаюсь использовать токен доступа из currentSession в отладчике API Graph 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();
10
dwbrito

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

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

28
dwbrito

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

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

9
lnx

Вам необходимо отключить Require App Secret в настройках приложения Facebook.

4
Donal

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

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

Отчет об ошибке в Facebook (октябрь 2016 г.)

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

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

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

0
turdus-merula