web-dev-qa-db-ja.com

なぜ「API引数で無効なappsecret_proofが提供されます」

Facebookでのappsecret_proofに関する最新の変更以来、 https://developers.facebook.com/docs/reference/api/securing-graph-api/ であるため、パフォーマンスレポートをダウンロードすることもできません。アプリの[詳細設定]から機能を有効/無効にした後、またはドキュメントに記載されているコードを適用します。

常にこのエラーが発生しています:

{"エラー":{"メッセージ": "API引数で無効なappsecret_proofが提供されました"、 "type": "GraphMethodException"、 "code":100}}

そして、私は秘密のバグをオープンしましたが、答えを返してくれる人はいません。

これ以上何を試すことができるのか本当に分かりませんか?

40
user1508682

エラーは(私の経験に基づいて)ほぼ間違いなく正しいです。 API呼び出しで無効なappsecret_proofを証明していることを意味します

標準のPHP SDKを変更せずに使用していると仮定すると、最も可能性の高い理由は次のとおりです。

  • SDKコードで間違ったアプリIDを設定しました
  • SDKコードで間違ったアプリシークレットを設定した
  • 間違った/別のアプリからアクセストークンを使用しようとしています
44
Igy

「無効なappsecret_proof ...」エラーの別の潜在的な原因は、アプリに関連付けられていないユーザーアクセストークンです。グラフエクスプローラーを使用してユーザーアクセストークンを生成する場合は、右上隅のドロップダウンからアプリを選択してください。それ以外の場合は、グラフAPIエクスプローラー内でのみ機能するトークンを生成します。

バグを報告した Python SDKを使用する前に、間違いを見つけました。GUIは悪魔です。

18
Dan Ross

Facebook SDKにバグがあります。私自身のコードをデバッグするためにすべてを試してから20時間後(問題はありませんでした!)、base_facebook.phpでこれをコメントアウトしました。

/* Commented out by SJ 
    if (isset($params['access_token'])) {
      $params['appsecret_proof'] = $this->getAppSecretProof($params['access_token']);
    }
*/

そして、すべての問題はなくなりました!

10
MrMoxy

Facebookの最新バージョンにバグはありませんPHP SDK。ドキュメントに従ってappsecret_proofを作成する必要があります。

$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);

次に、API呼び出しにパラメーターとして渡します。

こちらのドキュメントをご覧ください: https://developers.facebook.com/docs/graph-api/securing-requests/

これをやったらすべてがうまくいき、base_facebook.phpをハックする必要はありませんでした

9
user3077584

これはエラーです。これは正しいトークンが原因です。 Facebook設定用にWebアプリとモバイルアプリを設定するために異なるアカウントを使用していることが原因の可能性があります。両方のアカウントは同じでなければなりません。

モバイルアプリとWebアプリのアプリIDは同じである必要があります。

2
Vineeth Joseph

このエラーは、不正なアクセストークンを設定した結果です。たとえば、ユーザー(管理者)のアクセストークンを使用してページアルバムに投稿する場合。適切なアクセストークンを設定することで、ほぼ常にこのエラーを解決しました。

1
vinayhudli

このエラーが予期しない動作である場合は、アプリの設定をチェックして、それを要求している可能性があります。チェックを外すと、そのエラーが表示されなくなります。その設定は、設定->詳細にあり、「サーバーAPI呼び出しのアプリシークレットプルーフ」と呼ばれます。 NOに設定します。

現在のところ、その設定はこのページにあります(appIdをURLに入れてください): https://developers.facebook.com/apps/YOUR-APP-ID/settings/advanced/ =

これは普遍的な解決策ではなく、その動作を望まない人々のための解決策にすぎないことに注意してください。

1
user288926

私の場合、次の方法でデフォルトのアクセストークンを設定する必要がありました:setDefaultAccessToken()

GraphApi devツールで生成されたトークンを使用しましたが、適切なアプリケーションに切り替えませんでした。アプリケーションを適切なものに変更し、再生成されたトークンを使用することで解決しました。

0
Zank

私のために働く:

$appsecret_proof = hash_hmac('sha256', $facebook_page_token, $app_secret);

どこ facebook_page_tokenは、ページをアプリに関連付けるときに作成されたデータベースに保存されているページトークンです。

0
DAVEWV

設定が正しいことを確認してくださいfbappid + fbappsecret

このエラーは、それらが正しく設定されていない場合に発生します

開発用と生産用の2つのアプリがあるように

あなたはコードを台無しにして、それらの2つを再確認してください

0
Jacek Pietal

同じ問題を抱えている人だけのために。

FacebookでClient OAuth Loginを「yes」に設定する場合、適切なValid OAuthリダイレクトURI。それ以外の場合、facebookはまったく同じエラーをスローします。

0
Süha Boncukçu

enter image description here アクセストークンに問題がある可能性があります。ビジネスマネージャースタイルが必要です。 https://business.facebook.com/settings/system-users/ {sys_user_id}?business_id = {business_id}のコンテンツからトークンを取得するには、regex r'"accessToken":"([\d|\w]+)","context"'を使用します

0
Xun Lee

これは古い質問であることは知っていますが、アプリケーションをアクセストークンを生成する適切なアプリケーションに変更することで解決しました。例えば。 Project1からProject2へ。

0
jDmendiola