Я создал приложение на facebook и через PHP SDK 4.0. Я создал логин и мне нужно иметь разрешения на запись в фиде, но даже мы добавили разрешения, когда я это делаю не записывать в журнал больше окна окна для утверждения и предоставления разрешений.SDK 4.0 Facebook, нет диалогового окна для запроса разрешения publish_actions
это код используется:
<?php session_start();
require 'Facebook/autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphObject;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;
// init app with app id (APPID) and secret (SECRET)
FacebookSession::setDefaultApplication('XXXXXXXXXX XXXXXXXX','XXXXXXXXXXXXXXXXXX');
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('XXXXXXXXXXXXX');
try {
$session = $helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
} catch(Exception $ex) {
// When validation fails or other local issues
}
// see if we have a session
if (isset($session)) {
// graph api request for user data
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
// get response
$graphObject = $response->getGraphObject();
// print data
echo print_r($graphObject, 1);
if($session) {
try {
$response = (new FacebookRequest(
$session, 'POST', '/me/feed', array(
'link' => 'www.example.com',
'message' => 'User provided message'
)
))->execute()->getGraphObject();
echo "Posted with id: " . $response->getProperty('id');
} catch(FacebookRequestException $e) {
echo "Exception occured, code: " . $e->getCode();
echo " with message: " . $e->getMessage();
}
}
} else {
$params = array(
scope => 'publish_actions'
//redirect_uri => $url
);
// show login url
echo '<a href="' . $helper->getLoginUrl($params) . '">Login</a>';
}
?>
Будет хорошо, если бы вы просто наклеили фрагмент кода вместо длинных кодов. Это позволяет нам более эффективно понимать ваш код. – Roylee
Если у вас уже есть сеанс из предыдущего успешного входа в систему, который не включает 'publish_actions', ваш код не дойдет до того момента, когда он снова выведет (новый) URL-адрес для входа ... вы должны не только проверить, есть ли у вас действительный пользовательский сеанс, но также если у вас уже есть необходимые разрешения - и если один из них не работает, вам нужно снова отправить пользователя через поток входа. (И вы также должны принять во внимание то, что докторы говорят о том, что снова запрашивают разрешения, когда пользователь уже один раз отказывался от пользователя.) – CBroe
Привет, @CBroe, пожалуйста, поделитесь ссылкой, где можно снова прочитать запрос о повторном разрешении? –