我正在我的测试应用程序上测试分数api。
所以。。。我已使用以下权限注册了我的应用程序。
publish_stream,
publish_actions,
user_status,
user_photos
登录后,我在PHP 中请求以下api
$loggedUser = $Facebook->getUser();
$scoreUpdate = $Facebook->api('/'.$loggedUser."/scores", 'post', array('score'=> 100));
我得到以下错误。
必须使用应用程序access_token 调用此方法
所以我检查了sdk发送到脸书的内容,并确认它正在发送"access_token"和我的参数。
这种情况下有什么问题?
app access_token您可以简单地将其设置为:
$facebook->api('/me/scores', 'POST', array(
'score' => 100,
'access_token' => $facebook->getAppId().'|'.$facebook->getApiSecret()
));
voila
现在有两个令牌,一个User令牌。。。以及应用令牌。你需要晚一点。
现在,如果PHP-SDK找到一个用户access_token
,它将附加该用户,我认为这是您的情况。我建议你阅读官方的Facebook如何发布分数
示例取自我的教程:
$APPLICATION_ID = "APP_ID";
$APPLICATION_SECRET = "APP_SECRET";
$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $APPLICATION_ID .
"&client_secret=" . $APPLICATION_SECRET .
"&grant_type=client_credentials";
$app_token = file_get_contents($token_url);
$ret_obj = $fb->api( '/' . $fb->getUser() . '/scores', 'POST', array(
'score' => 100,
'access_token' => $fb->getAppId().'|'.$fb->getApiSecret()
));
如果你在access_token参数中指定了应用程序访问令牌,你最终将失去使用/me的能力,因此你必须具体说明用户ID。否则你会收到以下错误:"OAuthException:必须使用活动访问令牌来查询有关当前用户的信息",如下所述:facebookUnaughtOAuthException:必须使用活动访问令牌来查询有关当前用户的信息