Почему я получаю "Invalid appsecret_proof, предоставленный в аргументе API",
С момента последнего изменения на Facebook, касающегося appsecret_proof: https://developers.facebook.com/docs/reference/api/securing-graph-api/, мы по-прежнему не можем загружать отчеты об эффективности даже после включения/отключения функций из дополнительных настроек в наше приложение, или примените код, как описано в их документе.
Мы постоянно получаем эту ошибку:
{ "error": { "message": "Invalid appsecret_proof, предоставленный в аргументе API", "type": "GraphMethodException", "code": 100}}
и я открыл конфиденциальную ошибку, но никто не возвращает мне ответ.
Я действительно не знаю, что еще можно попробовать?
Ответы
Ответ 1
Ошибка (основанная на моем опыте) почти наверняка правильна; это означает, что вы подтверждаете недействительные appsecret_proof с помощью вызова API
Предполагая, что вы используете стандартный PHP SDK без изменений, наиболее вероятными причинами этого являются:
- Вы настроили неверный идентификатор приложения в SDK-коде
- Вы сконфигурировали неправильный секрет приложения в коде SDK
- Вы пытаетесь использовать токен доступа из неправильного/другого приложения.
Ответ 2
Другая потенциальная причина ошибки "Invalid appsecret_proof..." - это токен доступа пользователя, который не связан с приложением. Если вы создаете токен доступа пользователя с помощью проводника графов, обязательно выберите приложение из раскрывающегося списка в верхнем правом углу. В противном случае вы будете генерировать токены, которые работают только в проводнике графического API-интерфейса.
I подал ошибку с SDK Python, прежде чем я поймал свою ошибку. GUI - это дьявол.
Ответ 3
В SDK Facebook есть ошибка. После 20 часов попыток все отладить мой собственный код (у которого не было проблем!), Я прокомментировал это в файле base_facebook.php:
/* Commented out by SJ
if (isset($params['access_token'])) {
$params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
}
*/
И все проблемы ушли!
Ответ 4
Нет ошибок в последней версии PHP.
Вам необходимо создать appsecret_proof в соответствии с документами:
$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);
затем передайте его как параметр для вашего вызова api.
Смотрите документы здесь: https://developers.facebook.com/docs/graph-api/securing-requests/
Как только я сделал это, все было хорошо, и мне не пришлось взламывать base_facebook.php
Ответ 5
Это ошибка из-за правильного токена. Возможно, вы используете другую учетную запись для настройки веб-приложения и мобильного приложения для настройки Facebook. Оба аккаунта должны быть одинаковыми.
Идентификатор приложения должен быть одинаковым для вашего мобильного приложения и вашего веб-приложения.
Ответ 6
Эта ошибка является результатом установки неверного токена доступа. Например, размещение на альбомной странице с использованием токена доступа пользователя (администратора). Я решил эту ошибку почти все время, установив правильный токен доступа
Ответ 7
Если эта ошибка является неожиданным поведением, вы можете проверить ее в своем приложении. Снимите флажок, и вы должны прекратить эту ошибку. Этот параметр находится в настройках → расширенный и называется "App Secret Proof for Server API calls". Установите значение НЕТ.
На данный момент этот параметр находится на этой странице (обязательно разместите свое приложение в URL-адресе): https://developers.facebook.com/apps/YOUR-APP-ID/settings/advanced/
Обратите внимание, что это не универсальное решение, а только решение для людей, которые не хотят этого поведения.
Ответ 8
убедитесь, что ваша настройка верна fbappid + fbappsecret
эта ошибка возникает, если они не установлены правильно
как у вас есть 2 приложения, одна разработка и одна продукция
и вы испортите коды, дважды проверьте эти два
Ответ 9
Просто для людей, имеющих ту же проблему;
Когда вы устанавливаете Client OAuth Login на "да" на facebook, вы должны предоставить правильный Действительный URI перенаправления OAuth. В противном случае facebook выдает точно такую же ошибку.
Ответ 10
В моем случае мне нужно было установить токен доступа по умолчанию с помощью метода: setDefaultAccessToken()
Я использовал токен, сгенерированный в инструменте GraphApi dev, но я не переключился на правильное приложение. Это было решено путем изменения приложения на правильное и с использованием регенерированного токена.
Ответ 11
Я знаю, что это старый вопрос, но я решил, изменив приложение на соответствующее приложение, с которым я должен генерировать токен доступа. Например, из Project1
в Project2
.
Ответ 12
Возможно, что-то не так с вашим токеном доступа, вам нужен стиль Business Manager. Вы можете получить токен из содержимого https://business.facebook.com/settings/system-users/ {sys_user_id}? Business_id = {business_id} с помощью регулярного выражения r'"accessToken":"([\d|\w]+)","context"'