我经常收到OAuthException(#15)“尝试以下列方式注册我的应用程序的成就时,必须使用app 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方法更改为'get',我会收到一个存储注册成就的数组。
请告诉我如何使用JS API方法正确注册成就?
答案 0 :(得分:0)
您无法从客户端SDK(例如javascript SDK)调用需要应用访问令牌的方法。 Javascript SDK将始终隐式地为API调用发送用户访问令牌。这是出于安全原因的设计。
希望这会有所帮助
答案 1 :(得分:0)
似乎没有答案。我今天再次尝试过 - 它只是开始工作了。)
注意:即使你在调用FB.api()时指定了相应的'method'值,也不要期望POST请求出现在你的嗅探器中(就像我做的那样:)) - 你会看到任何方式得到一个。这是一种强制性的解决方法,它可以工作。
答案 2 :(得分:0)
我对此问题的解决方法是使用PHP获取APP访问令牌,然后将该令牌作为post对象的一部分传递。 USER访问令牌无效。
我必须为我正在构建的Flash游戏执行此操作,该游戏通过外部接口使用Javascript SDK。您无法使用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);
?>