2011-11-03 48 views
-1

我想讓我的網站訪問者在我的Facebook粉絲頁面上發佈,從我的網站頁面。用戶認證必須在發佈前完成。我怎樣才能做到這一點?目前我只能以管理員身份登錄到我的fb粉絲頁面。如何作爲訪問者在自定義網頁上發佈在Facebook粉絲頁面(PHP代碼)

我使用的代碼如下。

define("FB_APIKEY", "xxxxxxxx"); 
    define("FB_SECRET", "xxxxxxxx"); 
    $pageid  = xxxxxxxxxxxx; //replace it by your desire facebook page id 
    require_once("src/facebook.php"); 
    require_once("php/facebook.php"); 

    $facebook = new Facebook(array('appId' => "xxxxxxxxxxxxxxxx",'secret' =>"xxxxxxxxxxxxxxxxxxx",)); 

    $user = $facebook->getUser(); 
    $user = (string)$user; 
    if ($user!="") { 
    // The user is logged in 
    try { 

    $user_profile = $facebook->api("/".$user); 
$fb = new Facebook1(FB_APIKEY, FB_SECRET); 
$userId = $user; 

$targetId = "xxxxxxxxx"; // Page ID of the fan page 

    $fb->api_client->user = $userId; 
    $fb->api_client->session_key = $sessionKey; 
    $fb->api_client->expires = 0; 

    $fb->set_user($userId, $sessionKey); // set the 'logged in' user 

    // first, check if this UID is a valid user of this application 
    $isAppUser = $fb->api_client->users_isAppUser($userId); 

    // second, check whether this user has set the permission needed 
    // since my app need these permissions: offline_access, read_stream, publish_stream 
    $offline_access = $fb->api_client->users_hasAppPermission('offline_access', $userId); 

    $message="Test message for fabudeal"; 

    // if everything is okay... 
    if ($offline_access && $isAppUser) { 
    // write to this user's Wall 
    $fb->api_client->stream_publish($message, $attachment, null, $targetId, $userId); 
    } 

    } catch (FacebookApiException $e) {  

    $user = null; 
    } 
    } 

請幫我解決這個問題.....

回答

1

我已經找到了使用FB我的問題的JavaScript SDK的解決方案。我使用的代碼如下。以爲有人可能會覺得它有用。

<div id="user-info"></div> 
<textarea name="message" id="message" cols="40" rows="5"></textarea> 

<p><button id="fb-auth">Submit</button></p> 


<script> 
window.fbAsyncInit = function() { 
FB.init({ appId: 'YOUR APP_ID', 
     status: true, 
     cookie: true, 
     xfbml: true, 
     oauth: true}); 

function updateButton(response) { 
var button = document.getElementById('fb-auth'); 

if (response.authResponse) { 
//user is already logged in and connected 
    var userInfo = document.getElementById('user-info'); 
    FB.api('/me', function(response) { 
     var userInfo = document.getElementById('user-info'); 
     userInfo.innerHTML = 
      '<img src="https://graph.facebook.com/' 
     + response.id + '/picture" style="margin-right:5px"/>' 
     + response.name; 
    }); 

    button.onclick = function() { 
    var access_tokn = response.authResponse.access_token; 
    var msg = document.getElementById('message').value; 

    var wallPost = { 
     access_token: access_tokn, 
     message: msg 
    }; 

    FB.api('/YOUR_PAGE_ID/feed', 'post', wallPost, function(response) { 
     if (!response || response.error) { 
      alert('Error occurred'); 
     } else { 
      //alert('Success!'); 
      location.reload(true); 
     } 
    }); 
    }; 
} else { 
    //user is not connected to your app or logged out 
    button.innerHTML = 'Submit'; 
    button.onclick = function() { 
    FB.login(function(response) { 
    if (response.authResponse) { 
     FB.api('/me', function(response) { 
     var userInfo = document.getElementById('user-info'); 
     userInfo.innerHTML = 
      '<img src="https://graph.facebook.com/' 
     + response.id + '/picture" style="margin-right:5px"/>' 
     + response.name; 
    }); 
    var access_tokn = response.authResponse.access_token; 
    var msg = document.getElementById('message').value; 

    var wallPost = { 
     access_token: access_tokn, 
     message: msg 
    }; 

    FB.api('/YOUR_APP_ID/feed', 'post', wallPost, function(response) { 
     if (!response || response.error) { 
      alert('Error occurred'); 
     } else { 
      //alert('Success!'); 
      location.reload(true); 
     } 
    }); 

     } else { 
     //user cancelled login or did not grant authorization 
     } 
    }, {scope:'email,read_stream,publish_stream'});  
    } 
} 
} 

    // run once with current status and whenever the status changes 
    FB.getLoginStatus(updateButton); 
    FB.Event.subscribe('auth.statusChange', updateButton);  
    }; 

(function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol 
    + '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
}()); 

</script> 

感謝

相關問題