我需要在发布到自己的墙之前进行身份验证,所以这是我的代码
function get_app_token($appid, $appsecret)
{
$args = array(
'grant_type' => 'client_credentials',
'client_id' => $appid,
'client_secret' => $appsecret
);
$ch = curl_init();
$url = 'https://graph.facebook.com/oauth/access_token';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
$data = curl_exec($ch);
return json_encode($data);
}
$token = get_app_token($appid, $appsecret);
$attachment = array('message' => '',
'access_token' => $token,
'name' => 'Attachment Name',
'caption' => 'Attachment Caption',
'link' => 'http://apps.facebook.com/xxxxxx/',
'description' => 'Description .....',
'picture' => 'http://www.google.com/logo.jpg',
'actions' => array(array('name' => 'Action Text',
'link' => 'http://apps.facebook.com/xxxxxx/'))
);
$result = $facebook->api('/me/feed/', 'post', $attachment);
我收到错误 OAuthException ,OAuth访问令牌签名无效。
答案 0 :(得分:0)
你可以直接从facebook对象的会话数组中获取access_token。
$session = $facebook->getSession();
$session['access_token'];
当然你需要获得授权。如果未设置会话,则必须重定向到loginUrl
$facebook->getLoginUrl(array('req_perms' => 'email,read_stream,publish_stream'));
// this will return url for your authorization
并请求您需要的许可。
答案 1 :(得分:0)
$token
的值为access_token=<YOUR_ACCESS_TOKEN>
您无法将$token
值直接传递给access_token
参数。
$token = get_app_token($appid, $appsecret);
$access_token = split('=',$token);
$attachment = array(
'message' => '',
'access_token' => $access_token[1],
'name' => 'Attachment Name',
'caption' => 'Attachment Caption',
'link' => 'http://apps.facebook.com/xxxxxx/',
'description' => 'Description .....',
'picture' => 'http://www.google.com/logo.jpg',
'actions' => array(array('name' => 'Action Text',
'link' => 'http://apps.facebook.com/xxxxxx/'))
);
希望这有助于完成这项工作...... :)
答案 2 :(得分:-1)
client_credentials
访问令牌不会授予对/me
的任何访问权限(在这种情况下谁会“我”?没有任何内容可以将其与用户联系起来),更不用说发布访问权限了。它仅用于应用程序级Graph API调用,例如获取应用程序的Insights数据。