我正在使用适用于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();
}
我很茫然;我一直在盯着它,我找不到它的错误。
答案 0 :(得分:5)
你可以试试这个:
1.在您的FbApp中禁用"要求appsecret_proof用于服务器API调用"
2.在你的代码中,在线后FacebookSession :: setDefaultApplication($ app_key,$ app_secret);
添加以下行:FacebookSession :: enableAppSecretProof(false);