如何强制Facebook应用程序请求权限


How to force Facebook app to ask for permissions?

我使用以下代码生成Facebook登录链接:

<?php
try {
 include_once 'facebook_sdk_libs/facebook.php';
} catch(Exception $o){
 echo '<pre>';
 print_r($o);
 echo '</pre>';
}
// Create our Application instance.
$facebook = new Facebook(array(
  'appId'  => APPID,
  'secret' => APPSECRET,
  'cookie' => true,
));
$session = $facebook->getSession();
function d($d){
 echo '<pre>';
 print_r($d);
 echo '</pre>';
}
$fbme = null;
// Session based graph API call.
if ($session) {
 try {
  $uid = $facebook->getUser();
  $fbme = $facebook->api('/me');
 } catch (FacebookApiException $e) {
  //  d($e);   
 }
}
if($fbme){
 $logoutUrl = $facebook->getLogoutUrl();
} else { 
 $loginUrl = $facebook->getLoginUrl(
  array('scope' =>  'publish_stream')
 );
}

它显示了一个屏幕,Facebook显示"转到应用程序"answers"取消"。当我点击"转到应用程序"时,它会返回到我的页面,但不会按照我的意愿在Facebook墙上发布。

我需要在这个代码中更改什么才能让Facebook请求并获得"在墙上发帖"的许可?

感谢您的参与,我注意到了您关于access_token的线索,并发现此代码有效,我只是用此替换了getlogin代码

$loginUrl = $facebook->getLoginUrl(array(
    'canvas' => 1,
    'fbconnect' => 0,
    'req_perms' => 'email,publish_stream,status_update,user_birthday,user_location,user_work_history'));

它首先对我的应用程序进行身份验证,然后在下一步请求墙后权限。所以它是一步到位的,

非常感谢

您正在进行的操作只会让用户验证您的应用程序,而对于facebook,则会返回给您。这不会导致Facebook在用户墙上发帖。如果你想这样做,有两种选择:

  • 从Facebook的身份验证返回后,您可以在页面上有一个"张贴到墙上"的按钮,并使用JS SDK的FB.ui"提要"对话框请求用户张贴到墙上。当然,这并不一定意味着用户会在墙上发帖——他们可能会选择不发帖
  • 返回时,使用返回的access_token对Graph API进行服务器端调用,以便在用户墙上发布链接、帖子或状态。阅读Graph API参考