0
我在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 2014-09-03 07:04:46
如果您以前的成功登录中没有包含'publish_actions'的会话,那么您的代码将无法再次输出(新)登录URL ......您不仅应该检查您是否拥有有效用户会话,而且如果您已经拥有必要的权限 - 并且如果其中一个失败,则需要再次通过登录流程发送用户。 (你也应该考虑文档中关于再次请求权限的内容,以前已经被用户拒绝了) – CBroe 2014-09-03 08:42:23
嗨@CBroe请你分享一个链接,在那里再次询问拒绝的权限? – 2014-12-17 01:12:42