0

appsecret_proofFacebook API の最新の更新で、app_secret で署名されたアクセス トークンであるを提供する可能性があることを知っています。

問題は、Facebookアプリで設定したオプション(enable\disable : Require AppSecret Proof for Server API calls)に関係なく、常に次のようになることです。

Invalid appsecret_proof provided in the API argument

php-facebook-sdk の最新バージョンが常にパラメーター間に挿入されることを発見しましたappsecret_proof

...
if (isset($params['access_token'])) {
    $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
}
...
protected function getAppSecretProof($access_token) {
    return hash_hmac('sha256', $access_token, $this->getAppSecret());
}
...

アプリのチェックを無効にし、パラメーターを挿入する行にコメントを付けると、すべて正常に機能しますが、そうしないとエラーが発生します。

さて、どこが間違っていますか?私は三重にチェックし$access_token$this->getAppSecret()ドキュメントはすべて正しいようです。手がかりはありますか?

4

2 に答える 2

0

問題の簡単な解決策から複雑な解決策まで、頭を働かせてください。この特定のケースでは、最初に次のことをダブル (トリプル) チェックします: App-IDApp-SecretAPI-Version (アプリ ダッシュボードで提供される 3 つすべて) およびアクセス トークン([ツールとサポート] > [グラフ API エクスプローラー]) 。 .

私にとって欠けていたのはアクセストークンでした。Graph API Explorer の下で、右側のドロップダウンを見つけて、デフォルト値の「Graph API Explorer」ではなく、登録済みのアプリケーション名を選択してください。

したがって、すべてのコードは次のようになります (Graph v2.4):

$fb = new Facebook\Facebook([
  'app_id' => $app_id,
  'app_secret' => $app_secret,
  'default_graph_version' => $api_version
]);
于 2015-08-11T20:58:47.803 に答える