我有以下腳本可用,即如果用戶尚未登錄,它會轉到Facebook登錄頁面,並詢問他們是否可以在應用上發佈消息牆:僅在需要時纔要求facebook權限
<?php
require 'facebook.php';
$facebook = new Facebook(array(
'appId' => 'removed for security reasons',
'secret' => 'removed for security reasons',
'cookie' => true,
));
$session = $facebook->getSession();
if ($session) {
if (isset($_GET[id])) {
$post = $facebook->api("/" . $_GET['id'] . "/feed", "POST", array('message' => 'Hello!'));
echo 'A message has been posted on your friends wall';
} else {
$friends = $facebook->api('/me/friends');
foreach ($friends as $key=>$value) {
echo 'You have ' . count($value) . ' friends<br />';
foreach ($value as $fkey=>$fvalue) {
echo 'friend id = ' . $fvalue[id] . ' - friend name = ' . $fvalue[name] . ' - <a href="/stage2.php?id=' . $fvalue[id] . '">post message</a><br />';
}
}
}
} else {
$loginUrl = $facebook->getLoginUrl(array(
'req_perms' => 'publish_stream',
'next' => 'http://'.$_SERVER['SERVER_NAME'].'/stage1.php',
'cancel_url' => 'http://'.$_SERVER['SERVER_NAME'].'/cancel.php',
));
header('Location: '.$loginUrl);
}
?>
這是如何改善,所以它不要求在開始的擴展權限。它應該只要求基本權限來顯示朋友列表,並且只有在用戶點擊朋友發佈消息時才請求擴展權限。
從我可以告訴,你沒有要求stage1中的publish_stream。當你到達stage2時,有一個有效的會話,重定向從不執行。 – DannyKK 2011-04-29 12:58:29
好的,但是你發佈的代碼永遠不會要求發佈流的權限。您可以使用FQL查找您的應用程序是否具有所需的權限。 – DannyKK 2011-04-29 13:20:29