2012-03-22 53 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代碼首先驗證自己的應用程序,然後在接下來的步驟它要求後牆權限。所以它一步到位,

非常感謝

相關問題