带有客户端登录的Facebook扩展访问令牌服务器端

带有客户端登录的Facebook扩展访问令牌服务器端,facebook,facebook-graph-api,Facebook,Facebook Graph Api,我使用客户端sdk进行登录,在服务器端php sdk中使用graph api对触发的操作进行“挂墙发布”(我使用它进行脱机访问,但现在我知道它已弃用) 如何使用客户端sdk在服务器端获取扩展访问令牌,以便在服务器端使用扩展令牌 我知道有些答案是这样的,但他们使用服务器端登录,并从$_请求['code']获得扩展令牌,这是他们得到的响应 我知道有什么方法可以使用客户端登录获取$_REQUEST['code']的值吗 更新: <?php $settings = array (

我使用客户端sdk进行登录,在服务器端php sdk中使用graph api对触发的操作进行“挂墙发布”(我使用它进行脱机访问,但现在我知道它已弃用)

如何使用客户端sdk在服务器端获取扩展访问令牌,以便在服务器端使用扩展令牌

我知道有些答案是这样的,但他们使用服务器端登录,并从$_请求['code']获得扩展令牌,这是他们得到的响应

我知道有什么方法可以使用客户端登录获取$_REQUEST['code']的值吗

更新:

<?php
  $settings = array
  (
    'appId'  => FB_APP_ID,
    'secret' => FB_APP_SECRET,
    'cookie' => true,
    'oauth'  => true
  );    

  // Get facebook object from facebook sdk class
  $facebook  = new Facebook($settings); 

  if ($facebook)
  {                              
    $user_id   = $facebook->getUser();      

    $facebook->setExtendedAccessToken(); //long-live access_token 60 days
    $token     = $facebook->getAccessToken();            
    try 
    {                      
      $response = $facebook->api('me/og.like', 'POST',{ $MYCUSTOMDATA});
      return $response;
    }
    catch (FacebookApiException $e) 
    {
      print_r($e)
      return false;          
    }        
  }
?>
我的客户端登录代码支持oAuth:

FB.init({
  appId      : 'MYAPPID', // App ID
  status     : true,  // check login status
  cookie     : true,  // enable cookies to allow the server to access  the session
  xfbml      : true,  // parse XFBML
  oauth      : true   // enable OAuth 2.0
});  

FB.login(function() {
   FB.api('/me', {'fields': "some coma seperated fields"},
      function(response){ 
        //Function that sends data to server
        Pass_data_to_server( response );
      });    
}, scope:'some scope values');
服务器端代码:

<?php
  $settings = array
  (
    'appId'  => FB_APP_ID,
    'secret' => FB_APP_SECRET,
    'cookie' => true,
    'oauth'  => true
  );    

  // Get facebook object from facebook sdk class
  $facebook  = new Facebook($settings); 

  if ($facebook)
  {                              
    $user_id   = $facebook->getUser();      

    $facebook->setExtendedAccessToken(); //long-live access_token 60 days
    $token     = $facebook->getAccessToken();            
    try 
    {                      
      $response = $facebook->api('me/og.like', 'POST',{ $MYCUSTOMDATA});
      return $response;
    }
    catch (FacebookApiException $e) 
    {
      print_r($e)
      return false;          
    }        
  }
?>

您可以使用Facebook PHP SDK方法访问令牌

setExtendedAccessToken()
这将通过调用端点自动扩展短期扩展访问令牌

https://graph.facebook.com/oauth/access_token?             
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN 
然后,您可以保存此访问令牌,以便在接下来的60天内对请求进行授权。

您可以使用Facebook PHP SDK方法保存您的访问令牌

setExtendedAccessToken()
这将通过调用端点自动扩展短期扩展访问令牌

https://graph.facebook.com/oauth/access_token?             
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN 

然后,您可以保存此访问令牌,以便在接下来的60天内对请求进行授权。

考虑到您正在从服务器发布到用户墙上,您的服务器端不也有访问令牌吗side@AnveshSaxena是的,我有一个访问令牌,但是在我可以发布一次之后,它将很快过期,但是对于下一次发布,它给出了一个错误“必须使用活动访问令牌”考虑到您是从服务器发布到用户墙上的事实,您在服务器端不是也有访问令牌吗side@AnveshSaxena是的,我有一个访问令牌,但在我可以发布一次后,该令牌将很快过期,但对于下一次发布,它给出了一个错误“必须使用活动访问令牌”“在我的问题中,我已经更新了客户端和服务器端代码,我正在使用github更新的PHP sdk,仍然无法使其正常工作。是的,正如我告诉过你的,我可以使用访问令牌发布一次,但在下一次发布中,它返回错误,说“必须使用活动访问令牌”。当您在页面之间移动时,是否可以检查用户是否仍然登录?用户仍然登录,还有一件事我没有存储访问令牌,我正在再次调用set access token以进行下一个请求。我应该存储访问令牌吗?访问令牌存储在会话中,您在下一页中将访问令牌设置为什么。您还可以通过打印并检查access token来调试access token是否存在任何问题我已经更新了客户端和服务器端代码在我的问题中,我正在使用github更新的PHP sdk,仍然无法使其正常工作是的,正如我告诉您的,我可以使用access token发布一次,但对于下一篇文章,它返回错误消息“必须使用活动访问令牌“。您能检查用户在页面之间移动时是否仍然登录吗?用户仍然登录,还有一件事我没有存储访问令牌,我正在再次调用set access token以进行下一个请求。”。我应该存储访问令牌吗?访问令牌存储在会话中,您在下一页中将访问令牌设置为什么。您还可以通过打印并检查访问令牌来调试它是否存在任何问题