2011-12-13 69 views
1

我寫了一個函數將照片張貼到用戶牆,它會引發以下異常發佈照片至Facebook引發的異常

Fatal error: Uncaught OAuthException: A user access token is required to request this resource. thrown in C:\xampp\htdocs\upd8r\application\helpers\base_facebook.php on line 1039 

這是我失去了我的代碼 - 什麼?

function facebook_img_post($fb_id,$data){ 


     $this->load->helper('facebook'); 

     $this->load->model('mmaster'); 
     $globalSettings = $this->mmaster->getGlobalSettings('1'); 

     // Create our Application instance. 
     $this->facebook = new Facebook(array(
      'appId' => $globalSettings['facebook_id'], 
      'secret' => $globalSettings['facebook_secret'], 
      'cookie' => false 
     )); 

     $this->facebook->setFileUploadSupport(true); 


     $this->facebook->api("/".$fb_id."/photos",'post', array(
       'message'=> $data['message'], 
       'source' => $data['source'] 
      ) 
     ); 





     //new fb post 

    } 

更新

這是顯示所有的權限,註冊用戶請求

$data['loginUrl'] = $this->facebook->getLoginUrl(array('scope' => 'read_stream,publish_stream,status_update,offline_access')) 

更新2

我換了API並嘗試過的鏈接與捲曲有更多的控制,顯然我需要一個用戶訪問令牌,甚至雖然我正在檢索和使用應用程序訪問令牌 - 顯然有兩個不同的。

+0

類似問題這一個:[http://stackoverflow.com/questions/4662118/facebook-api-error-uncaught-oauthexception-error-validating-access-token][1] [1] :http://stackoverflow.com/questions/4662118/facebook-api-error-uncaught-oauthexception-error-validating-access-token – Robert 2011-12-13 18:56:55

回答

1

您需要讓用戶授予您publish_streammanage_page權限,並在獲取loginURL時執行此操作。

$loginUrl = $facebook->getLoginUrl(
    array(
     'scope' =>'user_status,user_photos,status_update,manage_pages,publish_stream,offline_access', 
     'redirect_uri' => $fbconfig['baseurl'] 
     ) 
); 

這裏的一些信息: FB權限:http://developers.facebook.com/docs/reference/api/permissions/

教程連接到FB,包括要求的權限:http://thinkdiff.net/facebook/php-sdk-3-0-graph-api-base-facebook-connect-tutorial/

+0

我已經這樣做了。用戶已經授予了權限並且還有offline_access – 2011-12-13 19:01:22

+0

您是否要求publish_stream權限以及offline_access? – FluffyKitten 2011-12-13 19:02:30

1

您需要申請一個訪問令牌與publish_stream許可

看看這個鏈接:

UPDATE

new Facebook創建實例之後,你必須重定向到FB用戶認證:

$loginUrl = $this->facebook->getLoginUrl(array('scope' => 'publish_stream, offline_access')); 
echo '<script>top.location.href="'.$loginUrl.'"</script>'; 

第二次更新

如果您以這種方式完成所有操作並且問題仍然存在,那麼您可能傳遞的圖像數據錯誤地捲曲。您必須在@前加上圖像路徑以通知CURL它必須將圖像作爲多部分數據發送。