Я хочу иметь возможность публиковать сообщения на стене пользователя (сообщение, которое он редактирует). Но если пользователь не разрешил публиковать сообщения от своего имени, я получаю следующую ошибку:
(# 1) Произошла ошибка при создании общего ресурса | OAuthException
Затем я прочитал, что могу снова запросить разрешение, снова отправив его на свой URL-адрес входа, но даже после разрешения там он отправляет ту же ошибку.
Код:
try{...
$ret_obj = $facebook -> api('/' . $user_id . '/feed', 'POST', array('name' => $title, 'link' => $redirect_url, 'caption' => $ptnr_fb_caption, 'icon' => 'http://...logo-small.png', 'picture' => $ptnr_fb_img, 'message' => $desc, 'privacy' => $arrPriv));
} catch(FacebookApiException $e) {
echo '<div id="text">Error :</div><br /><p style="width: 365px;margin: 0 auto;">Problem authenticating via Facebook, please allow us to share on your behalf.</p>';
echo '<center><a href="https://www.facebook.com/dialog/oauth?client_id=<my_id>&redirect_uri=http://<mysite>/getFacebookData.php&display=popup&scope=email,publish_stream&type=web_server">Allow here</a><center>';
//Send email to admin
$subject = "ERROR Facebook";
$body = "user email:" . $user_email . '| error:' . $e -> getMessage().'|'.$e->getType();
}
Изменить: Я обнаружил, что когда я снова разрешаю разрешения (по ссылке после получения сообщения об ошибке), только «все» / общедоступные генерируют ошибку, а только я и мои друзья - нет.
Обновление (@Axel Amthor):
$facebook = new Facebook( array('appId' => 'app_id', 'secret' => 'removed', ));
//We got after the authentication request
$access_token = $_POST['access_token'];
$facebook -> setAccessToken($access_token);
try {
$user_info = $facebook -> api('/me');
$user_id = $user_info['id'];
} catch (FacebookApiException $e) {
//return 0;
}
Обновление 2: Код, связанный с областью действия:
$red_url = 'https://www.facebook.com/dialog/oauth?client_id=my_id&redirect_uri=http://mysite/facebook/getFacebookData.php&display=popup&scope=email,publish_stream&type=web_server';
Он перенаправляет на getFacebookData.php:
$access_token = '';
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=my_id&redirect_uri=http://mysite/facebook/getFacebookData.php&client_secret=secret&code=" . $_GET['code'];
$access_token = file_get_contents($token_url);
$access_token = substr($access_token, 13, strlen($access_token) - (13 + 16));
Он отправляет этот токен доступа на третью страницу (код в обновлении: «Обновить (@Axel Amthor):»).
$facebook
? - person Axel Amthor   schedule 29.05.2013$user_info = $facebook -> api('/me');
работает? - person Axel Amthor   schedule 30.05.2013scope
, с просьбой предоставить разрешение дляpublish_stream
,status_update
илиpublish_action
- что вы хотите сделать? В настоящее время, я полагаю, никаких разрешений не установлено. - person Axel Amthor   schedule 30.05.2013