OAuthException (# 15) «Этот метод должен вызываться с приложением access_token» при попытке опубликовать достижение - PullRequest
0 голосов
/ 09 сентября 2011

Я постоянно получаю 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 на «get», я получаю массив, в котором хранятся зарегистрированные достижения.

Подскажите, пожалуйста, как правильно регистрировать достижения, используя методы JS API?

Ответы [ 3 ]

0 голосов
/ 13 сентября 2011

Кажется, нет ответа.Я попробовал это еще раз сегодня - и он просто начинает работать.)

ПРИМЕЧАНИЕ: не ожидайте появления запроса POST в вашем анализаторе (как я сделал :)), даже если вы указали соответствующийЗначение 'method' при вызове FB.api () - в любом случае вы увидите GET.Это принудительный обходной путь, и он работает.

0 голосов
/ 12 ноября 2011

Моим решением этой проблемы было получение токена доступа APP с помощью PHP, а затем передача этого токена как части объекта 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);

?>
0 голосов
/ 10 сентября 2011

Вы не можете вызывать методы, которые требуют токен доступа к приложению из клиентских SDK, таких как javascript SDK. Javascript SDK всегда будет отправлять маркер доступа пользователя неявно для вызовов API. Это сделано из соображений безопасности.

надеюсь, это поможет

...