2012-03-22 80 views
0

我使用下面的代码来生成一个Facebook的登录链接:如何强制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询问并获得“发布在墙上”的许可?

回答

0

您正在执行的操作只会让用户验证您的应用程序,而Facebook将返回给您。这不会导致Facebook发布到用户的墙上。如果你想做到这一点,有两种选择:

  • 在从Facebook的身份验证回报,你可以在页面上的一个按钮为“涂鸦墙”和使用JS SDK的FB.ui 'feed' dialog要求用户张贴到墙上。当然,这并不一定意味着用户会贴到墙上 - 他们可能会选择不贴墙。
  • 在返回时,通过返回的access_token向Graph API发出服务器端调用,以在用户的​​墙上张贴linkpoststatus。阅读Graph API reference
1

感谢您的参与,我已经注意到你约的access_token线索,发现这段代码的工作,我只是替换这一个

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

getlogin代码首先验证自己的应用程序,然后在接下来的步骤它要求后墙权限。所以它一步到位,

非常感谢

相关问题