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

时间:2012-03-22 13:12:02

标签: php facebook api facebook-graph-api

我使用以下代码生成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显示“转到应用程序”和“取消”的屏幕。当我点击“转到应用程序”时,它会返回到我的页面,但不会在Facebook墙上发布我想要的内容。

我需要更改此代码才能让Facebook询问并获得“Post on Wall”的许可?

2 个答案:

答案 0 :(得分:1)

感谢您的参与,我已经注意到您关于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'));

它首先验证我的应用程序然后在下一步它要求post wall权限。所以它只需一步即可完成,

非常感谢

答案 1 :(得分:0)

您正在进行的操作只会让用户验证您的应用,并且Facebook会返回给您。这不会导致Facebook发布到用户的墙上。如果您希望这样做,有两种选择:

  • 从Facebook的身份验证返回后,您可以在页面上找到“发布到墙”的按钮,并使用JS SDK的FB.ui 'feed' dialog请求用户发布到墙上。当然,这并不一定意味着用户会发布到墙上 - 他们可能会选择不发布。
  • 在返回时,使用返回的access_token对Graph API进行服务器端调用,以在用户的​​墙上发布linkpoststatus。阅读Graph API reference