0

在尝试通过以下方式为我的应用程序注册成就时,我不断收到 OAuthException (#15)“此方法必须使用应用程序 access_token 调用”:

FB.api("/APP_ID/achievements",
'post',
{achievement: FULL_ACHIEVEMENT_URL, access_token: ACCESS_TOKEN, display_order: 1},
function(response){
    getFlashMovieObject(referrer).fbDataCallback(response);
});

成就文件结构已经过验证并且是正确的,ACCESS_TOKEN 值也可以 - 如果我将 HTTP 方法更改为“获取”,我会收到一个存储已注册成就的数组。

你能告诉我如何使用 JS API 方法正确注册成就吗?

4

3 回答 3

0

Seems there is no answer. I've tried it once again today - and it simply starts working.)

NOTE: don't expect for a POST request to appear in your sniffer (as I did:)) even if you have specified respective 'method' value while calling FB.api() - any way you'll see the GET one. It's a forced workaround and it works.

于 2011-09-13T11:58:03.030 回答
0

我对这个问题的解决方案是使用 PHP 获取 APP 访问令牌,然后将该令牌作为 post 对象的一部分传递。USER 访问令牌将不起作用。

我必须为我正在构建的通过外部接口使用 Javascript SDK 的 Flash 游戏执行此操作。您无法使用 Javascript 获取应用程序访问令牌,因为您会泄露应用程序机密,这是一个安全问题。

<?php

$APPLICATION_ID = YOUR_APP_ID;
$APPLICATION_SECRET = YOUR_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);

?>
于 2011-11-12T14:18:05.027 回答
0

您不能从客户端 SDK(如 javascript SDK)调用需要应用访问令牌的方法。Javascript SDK 将始终为 API 调用隐式发送用户访问令牌。这是出于安全原因而设计的。

希望这可以帮助

于 2011-09-10T03:42:55.257 回答