2012-07-26 74 views
1

我目前正在開發zend框架中的社交引擎。 社交引擎有這個內置的插件,讓你保持連接到Facebook,即使你註銷到Facebook網站。因此,當您在我的社交引擎網站上發佈狀態時,即使您未登錄Facebook網站(我的意思是在facebook.com中),它仍會張貼在您的牆上,但我不知道如何在我在社交引擎中的自定義小部件,這就是爲什麼我認爲我應該只使用Facebook SDK。保持連接到Facebook

我成功地使用Facebook SDK,但問題是它要求用戶登錄每次腳本檢測到用戶沒有登錄facebook.com。 如何解決這個??

我實際上可以檢索像openid,facebookemail這樣的用戶詳細信息。 YEPS,這只是我知道:(

回答

1

我已經開發同類應用中的Zend框架的東西。我用的Facebook/PHP-SDK使用OAuth 2.0。

在這種情況下,你需要保存特定用戶的數據庫訪問權限,並使用該訪問令牌可以獲取任何數據以及發佈到。是的,因爲您需要授予用戶對您的Facebook應用程序的必要權限。在我的應用程序中用來獲取訪問令牌的兩個函數,擴展它並存儲在數據庫中。

/** 
    * Getting User Acess Tocken , extended it and save it in to database...... 
    */ 
    public function getAccessToken($user_id,$fb_account_id) 
    { 
     $access_token=$this->facebook->getAccessToken();    
     $extended_access_token=$this->getExtendedAccessToken($access_token);     
     /** 
     * To save Access tocken and other necessary option 
     */ 
     $usr_bus_model = new Application_Model_UserBusinessAccounts; 

     $usr_bus_model->loadAccount($user_id,'Facebook',(int)$fb_account_id); 

     $usr_bus_model->details=$extended_access_token; 
     $usr_bus_model->save(); 

     return $extended_access_token; 
    } 

    /** 
    * Exrending User Acess Tocken..... 
    */ 

    public function getExtendedAccessToken($access_token) 
    {  

     $token_url="https://graph.facebook.com/oauth/access_token"; 
     $params=array('client_id'=>self :: appId,'client_secret'=>self :: appSecretId,'grant_type'=>'fb_exchange_token','fb_exchange_token'=>$access_token); 

      $response = $this->curl($token_url,$params); 
      $response = explode ('=',$response); 
      $response = explode ('&',$response[1]); 
      $response = $response[0];  
      return $response; 

    } 

希望它有幫助。

+0

我發現了一個可能存儲令牌(用於離線訪問)的Facebook數據庫表。你使用這種方法嗎?存儲脫機訪問令牌後,它是否過期?或不要永遠過期? – KazuNino 2012-07-27 15:37:49

+0

我已通過getAccessToken() - Facebook對象獲取訪問令牌。是的,offline_access權限將在十月份被刪除,因此您可以更好地使用此facebook對象。有一種簡單的方法可以在接下來的60天內擴展此訪問令牌。因此當用戶點擊以顯示流時,您可以明確地擴展該特定用戶的訪問令牌。爲了您的幫助,我將編輯帖子,並提供兩個函數,我如何提取訪問令牌並擴展訪問令牌並將其存儲在數據庫中。 – 2012-07-28 03:58:06