Facebook PHP API错误代码100:API中提供的appsecret_proof无效

jc_*_*mer 1 php facebook facebook-graph-api

我正在使用适用于Facebook的PHP SDK 4.0版.我已经四处寻找下午的大部分时间,但是我发现的与我的问题有关的任何帖子要么没有用,要么涉及使用较旧的SDK版本.

我正在尝试使用FacebookRequest对象向Facebook发出基本的GET请求,但它返回错误代码100,并显示错误消息"API中提供的appsecret_proof无效".

在我的应用程序设置中,我尝试启用"require appsecret_proof for server API calls",并禁用它.奇怪的是,这并没有改变我收到的错误.

编辑:我已经仔细检查了我的应用密钥,应用密钥和访问令牌,它们看起来都是正确的.

这是我的代码:

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'Facebook/autoload.php' );

use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;

$app_key = 'MYAPP_KEY';
$app_secret = 'MYAPP_SECRET';

$fb_access_token = "MYACCESS_TOKEN";

// init app with app id (APPID) and secret (SECRET)
FacebookSession::setDefaultApplication($app_key,$app_secret);

try {
  $session = new FacebookSession($fb_access_token);
} catch( FacebookRequestException $ex ) {
  // When Facebook returns an error
    echo "Facebook returned a request exception.";
    exit;
} catch( Exception $ex ) {
  // When validation fails or other local issues
    echo "Facebook returned an unspecified exception.";
    exit;
}

try{
    // graph api request for user data
    $request = new FacebookRequest( $session, 'GET', '/me' );
    $response = $request->execute();
    // get response
    $graphObject = $response->getGraphObject();

    // print data
    echo  print_r( $graphObject, 1 );
}catch(FacebookRequestException $e){
    echo "Exception occured, code: " . $e->getCode();
    echo " with message: " . $e->getMessage();
    echo "Raw response: " . $e->getRawResponse();
}
Run Code Online (Sandbox Code Playgroud)

我不知所措; 我一直在盯着它,我无法找到它的错误.

小智 5

您可以尝试这样做:
1.在您的FbApp中禁用"require appsecret_proof for servers API calls"
2.在您的代码中,在FacebookSession :: setDefaultApplication($ app_key,$ app_secret)之后;
添加以下行:FacebookSession :: enableAppSecretProof(false);