如何解决“必须使用应用程序access_token调用此方法”错误?

发布于 2024-12-11 06:20:45 字数 503 浏览 0 评论 0原文

我正在我的测试应用程序上测试分数 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 发送到 facebook 的内容,并确认它正在发送“access_token”以及我的参数。

这个案例有什么问题呢?

I'm testing out scores api on my test app.

So...I've singed up my app with the following permissions.

publish_stream,
publish_actions,
user_status,
user_photos

After logged in, I'm requesting the following api in PHP

$loggedUser = $Facebook->getUser();
$scoreUpdate = $Facebook->api('/'.$loggedUser."/scores", 'post', array('score'=> 100));

I get the following error.

This method must be called with an app access_token

So I've checked what the sdk is sending to facebook, and I've confirmed that it is sending 'access_token' along with my params.

What's the problem in this case?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蓝眼睛不忧郁 2024-12-18 06:20:45

应用程序 access_token 您可以简单地使其像这样:

$facebook->api('/me/scores', 'POST', array(
'分数' => 100,
'access_token'=>; $facebook->getAppId().'|'.$facebook->getApiSecret()
));

app access_token you can simple make it like this:

$facebook->api('/me/scores', 'POST', array(
'score' => 100,
'access_token' => $facebook->getAppId().'|'.$facebook->getApiSecret()
));

voila

小耗子 2024-12-18 06:20:45

现在有两个令牌,一个用户令牌...和一个应用程序令牌。你需要后者。

现在,如果 PHP-SDK 找到符合您的情况的 access_token,它就会附加用户 access_token。我建议您阅读官方 Facebook 如何发布分数

示例取自我的< a href="http://www.masteringapi.com/tutorials/how-to-get-a-facebook-application-access-token/41/" rel="nofollow">教程:

$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);

Now there are two tokens, a User token...and an Application token. You need the later.

Now the PHP-SDK will append the user access_token if it finds one which is I think your case. I suggest you read the official Facebook how-to for publishing scores

Example taken from my tutorial:

$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);
離殇 2024-12-18 06:20:45
$ret_obj = $fb->api( '/' . $fb->getUser() . '/scores', 'POST', array(
    'score' =>  100,
    'access_token' => $fb->getAppId().'|'.$fb->getApiSecret()
));

如果您在 access_token 参数中指定应用程序访问令牌,您最终将失去使用 /me 的能力,因此您必须具体说明用户 ID。否则,您会收到此错误:“OAuthException:必须使用活动访问令牌来查询有关当前用户的信息”,如下所述: facebook 未捕获 OAuthException:必须使用活动访问令牌来查询有关当前用户的信息

$ret_obj = $fb->api( '/' . $fb->getUser() . '/scores', 'POST', array(
    'score' =>  100,
    'access_token' => $fb->getAppId().'|'.$fb->getApiSecret()
));

If you specify the app access token in the access_token parameter, you will eventually lose the ability to use /me, so you have to be specific about the user ID. Otherwise you get this error: "OAuthException: An active access token must be used to query information about the current user", as explained here : facebook Uncaught OAuthException: An active access token must be used to query information about the current user

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文