0

Решение Edit: Оказывается, вы не можете использовать PHP SDK для возврата правильного App токен, ни вы можете попасть в опции OpenGraph в разделе App сайта разработчика, нажмите кнопку «Получить Код»и захватить маркер доступа приложения оттуда .. вы должны сделать это:Facebook Регистрация Achievement access_token вопрос

$token_url = 'https://graph.facebook.com/oauth/access_token?client_id=' . $fbConfig['appId'] . '&client_secret=' . $fbConfig['appSecret'] . '&grant_type=client_credentials'; 
$accessToken = explode('=',file_get_contents($token_url)); 
$accessToken = $accessToken[1]; 

Оригинальный вопрос: Использование PHP SDK, я безуспешно в регистрации своих достижений. Я продолжаю получать следующую ошибку: «Этот метод должен быть вызван с помощью приложения access_token».

Однако, когда я ввожу токен, который я использую в opengraph (https://graph.facebook.com/app?access_token=ACCESS_TOKEN), я правильно получаю информацию о своем приложении.

Вот методы, которые я пробовал до сих пор в регистрации моих достижений:

$param = array(
    'access_token' => $accessToken, 
    'achievement' => 'http://domain.com/path/to/my/achievement/page', 
    'display_order' => $achievements['achievementWeight'] 
); 
$achievement = $fb->api('/'.$this->CI->config->item('app_id').'/achievements', 'POST', $param); 

$superCurl = "curl -F 'achievement=" . $achieveUrl . "&access_token=" . $accessToken . "' https://graph.facebook.com/" . $appId . "/achievements"; 
exec($superCurl,$result); 


$url = 'https://graph.facebook.com/' . $this->CI->config->item('app_id') . '/achievements?access_token=' . $accessToken; 
$c = curl_init ($url); 
curl_setopt($c, CURLOPT_HEADER, false); 
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($c, CURLOPT_POST, true); 
curl_setopt($c, CURLOPT_POSTFIELDS, $param); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
if(curl_errno($c)){ 
    $this->CI->firephp->log(curl_error($c)); 
} 
$page = curl_exec ($c); 
curl_close ($c); 

Все всегда возвращается, говоря, что это нуждается в access_token.

ответ

0

См Authenticating as an App документа - вы должны использовать маркер доступа приложения, которое позволяет действовать от имени приложения - маркер доступа пользователя не будет достаточно для этого случая (и некоторых других)

+0

Я знаю, , Я проверил access_token, я использую токен доступа приложения в соответствии с ссылкой API-интерфейса графика, упомянутой выше. Он возвращает информацию о приложении, ничего о пользователе. – Enzo

+0

Извините, я, возможно, неправильно понял. Вы должны иметь возможность использовать токен доступа к приложениям, полученный с помощью метода в ссылке i shared - это должно позволить вам читать типы достижений, создавать типы достижений и публиковать новые достижения для пользователя, который предоставил вы опубликуете разрешение на использование Предостережение: если в настройках вашего приложения указано, что это приложение для родного/настольного приложения, секрет приложения не будет доверен, и вы не сможете использовать его – Igy

+0

К сожалению, он не работает, я просто получаю сообщение об ошибке постоянно. , Мне как-то удалось получить 2 достижения, которые я могу вытащить и предоставить пользователям, но я не могу добавить новые, отредактировать 2, которые я получил, или удалить их. Это становится довольно неприятным. – Enzo

 Смежные вопросы

  • Нет связанных вопросов^_^