Facebook注册成就access_token问题

时间:2012-04-04 21:23:42

标签: facebook facebook-php-sdk achievements facebook-access-token

解决方案编辑: 事实证明,您无法使用PHP SDK返回正确的App令牌,也无法点击开发者网站的App部分中的OpenGraph选项,点击"获取代码"并从那里抓取应用程序访问令牌..你必须这样做:

$token_url = 'https://graph.facebook.com/oauth/access_token?client_id=' . $fbConfig['appId'] . '&client_secret=' . $fbConfig['appSecret'] . '&grant_type=client_credentials';
$accessToken = explode('=',file_get_contents($token_url));
$accessToken = $accessToken[1];

原始问题: 使用PHP SDK,我一直试图注册我的成就失败。我一直收到以下错误: "必须使用app access_token调用此方法。"

但是,当我输入令牌时,我会使用opengraph(https://graph.facebook.com/app?access_token=ACCESS_TOKEN)来正确获取我的应用信息。

以下是我在注册成就时所尝试的方法:

$param = array(
    'access_token' => $accessToken,
    'achievement' => 'http://domain.com/path/to/my/achievement/page',
    'display_order' => $achievements['achievementWeight']
);
$achievement = $fb->api('/'.$this->CI->config->item('app_id').'/achievements', 'POST', $param);

$superCurl = "curl -F 'achievement=" . $achieveUrl . "&access_token=" . $accessToken . "' https://graph.facebook.com/" . $appId . "/achievements";
exec($superCurl,$result);


$url = 'https://graph.facebook.com/' . $this->CI->config->item('app_id') . '/achievements?access_token=' . $accessToken;
$c = curl_init ($url);
curl_setopt($c, CURLOPT_HEADER, false);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, $param);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
if(curl_errno($c)){
    $this->CI->firephp->log(curl_error($c));
}
$page = curl_exec ($c);
curl_close ($c);

一切都回来说它需要一个access_token。

1 个答案:

答案 0 :(得分:0)

请参阅Authenticating as an App文档 - 您必须使用应用程序的访问令牌,它允许您代表应用程序行事 - 用户访问令牌不足以满足此案例(以及其他几个)