Php OAuthException:无效的OAuth访问令牌签名
当我直接在浏览器中键入此url时,我会将帖子发送到用户提要墙Php OAuthException:无效的OAuth访问令牌签名,php,facebook,facebook-graph-api,curl,Php,Facebook,Facebook Graph Api,Curl,当我直接在浏览器中键入此url时,我会将帖子发送到用户提要墙 https://graph.facebook.com/xx facebook uid xx/feed?access_token=xx app access token xx&message=Welcome%20to%20App!&method=post 但是,当我使用此代码自动发送邮件时,它会给我以下错误:OAuth访问令牌签名无效。 <?PHP include_once "inc/facebook.
https://graph.facebook.com/xx facebook uid xx/feed?access_token=xx app access token xx&message=Welcome%20to%20App!&method=post
但是,当我使用此代码自动发送邮件时,它会给我以下错误:OAuth访问令牌签名无效。
<?PHP
include_once "inc/facebook.php";
require_once 'inc/config.php';
// Create our application instance
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
));
$dbh = new PDO('mysql:dbname='.$db_name.';host='.$db_host.';charset=utf8', $db_username, $db_password );
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare('SELECT fb_id FROM offline_access_users');
$stmt->execute();
$body = array(
'message' => 'Test Multiple Messages',
'link' => '',
'picture' => '',
'name' => '',
'description'=> ''
);
$batchPost=array();
$i=1;
foreach ($stmt as $value) {
$id = $value['fb_id'];
$batchPost[] = array(
'method' => 'POST',
'relative_url' => "/" . $id . "/feed?access_token=" . $access_token,
'body' => http_build_query($body) );
if($i++ == 50) {
try {
$multiPostResponse = $facebook->api('?batch=' . urlencode(json_encode($batchPost)), 'POST');
echo "Success";
} catch(FacebookApiException $e) {
error_log($e);
echo($e);
}
unset($batchPost);
$i=1;
}
}
if(isset($batchPost) && count($batchPost) > 0 ) {
try{
$multiPostResponse = $facebook->api('?batch=' . urlencode(json_encode($batchPost)), 'POST');
echo "Success";
} catch(FacebookApiException $e){
error_log($e);
echo($e);
}
}
$db = null;
?>
我真的不知道如何解决这个问题。请帮助我在代码中回显您正在调用的实际url,并查看它是否符合您的期望。可能是空格等原因导致了异常。@Vladimir感谢您的回复,但我已经按照您的建议做了,但不幸的是,我发现url与我直接在浏览器中键入的url相同。我认为循环或将值传递给php post函数有问题。