2012-05-28 81 views
1

我想在我的網站上啓用Facebook自動發佈功能。通過Facebook-SDK創建自動POST

首先我創建了一個應用程序,然後按照facebook文檔我使用Facebook的sdk爲PHP,我插入APP-ID和APP-SECRET,創建登錄URL和...到我的腳本(一切像facebook文檔),但我仍然有問題!

的問題是:

首次當用戶訪問我的頁面時,他看到的登錄鏈接。當他點擊它時,他會重定向到Facebook對話框頁面以允許應用程序活動。在此之後,當facebook將用戶重定向到我的畫布頁面時,他再次看到登錄鏈接! (看來getUser()函數在我的腳本中沒有正常工作!)。

基於Facebook指南用戶必須看到用戶配置文件的詳細信息...但仍然可以看到登錄鏈接。

我該如何解決這個問題......?

<?php 

     require_once("libs/facebook.php"); 
     $config = array(
      'appId' => 'XXXX', 
      'secret' => 'XXXX'  
     ); 
     $fbConnect = new Facebook($config); 

     $user_id = $fbConnect->getUser(); 
     if($user_id) 
     { 
      try { 

       $userProfile = $fbConnect->api('/me', 'GET'); 
       echo "Name: " . $userProfile['name']; 

      } catch (FacebookApiException $e) { 

       $loginUrl = $fbConnect->getLoginUrl(); 
       echo "<a href='" . $loginUrl . "'>LOGIN 2</a>"; 

      } 
     } 
     else 
     { 
      $loginUrl = $fbConnect->getLoginUrl(array('scope' => 'publish_stream')); 
      echo "<a href='" . $loginUrl . "'>LOGIN 1</a>"; 
     } 
    ?> 

用戶總是看到「登錄1」!這意味着$ user_id始終爲空(在允許活動的應用程序之前和之後)!應用程序允許後(當用戶第一次點擊loginUrl鏈接時)我的網址查詢字符串中有'stat'和'code'!但仍然可以看到「登錄1」!

回答

1

我想你想發佈一條消息,如「嘿傢伙,我現在使用Aref的superawsome Facebook應用程序現在」,對吧?

這可以通過以下行來完成:

<?php 
require_once("/FBAPI/src/facebook.php"); 

$config = array(); 
$config['appId'] = 'your_app_id'; 
$config['secret'] = 'your_app_secret'; 
$facebook = new Facebook($config); 

$user = $facebook->getUser(); 
if(!$user){ 
    $loginUrl = $facebook->getLoginUrl(array('scope'=>'publish_stream', 'redirect_uri'=>'http://www.example.com')); 
} 
if($user){ 
    try{ 
     $user_profile = $facebook->api('/me'); 
     $access_token = $facebook->getAccessToken(); 
     $vars = array(
     'caption' => 'Aref\'s Facebook Application', 
     'message' => 'Hey guys, I am now using Aref\'s superawsome Facebook App :D', 
     'name' => 'Test', 
     'link' => 'http://www.example.com', 
     'description' => 'Aref\'s Facebook Canvas App', 
     'picture' => 'http://fbrell.com/f8.jpg' 
     ); 
     $result = $facebook->api('/me/feed', 'post', $vars); 
     if($result){ 
      echo "Post was set"; 
     } 
     else{ 
      echo "Error!"; 
     } 
    } 
    catch(FacebookApiException $e){ 
     error_log($e); 
     $user = NULL; 
    } 
} 
else{ 
    echo '<a href="'.$loginUrl.'"><img src="img/login.png"/></a>'; 
} 
?> 
+0

是啊...這樣的事情。我寫了像你一樣的腳本,但我仍然有問題!我將我的腳本添加到我的問題中......它有什麼問題! – Aref

+0

我會研究它,我想我會在一天結束時有一個解決方案! –

+0

請更新您的答案丹尼爾 –