2014-09-03 129 views
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>'; 
} 
?> 
+0

如果你能够粘贴代码片段而不是冗长的代码,那将会很好。这使我们能够更有效地理解您的代码。 – Roylee 2014-09-03 07:04:46

+0

如果您以前的成功登录中没有包含'publish_actions'的会话,那么您的代码将无法再次输出(新)登录URL ......您不仅应该检查您是否拥有有效用户会话,而且如果您已经拥有必要的权限 - 并且如果其中一个失败,则需要再次通过登录流程发送用户。 (你也应该考虑文档中关于再次请求权限的内容,以前已经被用户拒绝了) – CBroe 2014-09-03 08:42:23

+0

嗨@CBroe请你分享一个链接,在那里再次询问拒绝的权限? – 2014-12-17 01:12:42

回答

0

publish_actions应该被Facebook您的申请获得批准,如果你已经报批的Facebook可能需要长达一个星期,直到你就不能发布在Facebook上的用户的故事时间线。

相关问题