2012-07-26 65 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