2013-04-22 185 views
0

我创建了一个带图api的Facebook地方serach。但访问密钥每两小时过期一次。为此,我已经实现了下面的代码如何解决Facebook访问令牌到期问题?

$app_id = "---"; 
$app_secret = "----"; 
$my_url = ""; 
$code = $_REQUEST["code"]; 
if (isset($code)) { 

    $token_url="https://graph.facebook.com/oauth/access_token?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) 
     . "&client_secret=" . $app_secret 
     . "&code=" . $code . "&display=popup"; 
    $response = file_get_contents($token_url); 
    $params = null; 
    parse_str($response, $params); 
    $access_token = $params['access_token']; 
} 
$FacebookGraphURL = 'https://graph.facebook.com/search?fields=id,username,name,category,website,likes,location&q='.$keyword.'&type=place&center='.$center.'&distance='.$radius.'&limit=5&access_token='.$access_token; 
    $FacebookGraphJSON = file_get_contents($FacebookGraphURL); 

但是,这是给下面的错误:

Notice: Undefined index: code in /opt/lampp/htdocs/APIcomparison/facebook_graph.php on line 24 

我缺少的是什么?另一件事我不知道用什么$ my_url

感谢提前。

+0

您试图访问'$ _REQUEST [ “密码”]',它是否存在与否。用'isset'检查_that_(并且不必将th值复制到另一个变量)。 – CBroe 2013-04-23 15:26:56

+0

@CBroe,我已经编辑了if(isset($ _REQUEST [“code”])) 的代码,但问题永远不会进入if条件,但应该始终如一。 – user2302780 2013-04-24 00:40:38

+0

为什么不直接使用PHP SDK - 为您自动处理所有这些(解压缩代码,交换它为一个访问令牌)......因此不需要“手动”来完成。 – CBroe 2013-04-24 08:31:06

回答

1

您是否通过Graph Explorer工具生成访问令牌?如果是这样,这些令牌有2小时的到期时间。

您可以通过Facebook登录/ OAuth流程生成一个访问令牌,其有效期为60天,在此期间,您可以通过点击'allow(允许)您的应用程序访问您的(或任何用户)Facebook用户帐户'按钮在授权对话框上。获得访问令牌后,您可以将其换成长寿命令牌。在Facebook上的OAuth这里

详情:https://developers.facebook.com/docs/reference/dialogs/oauth/

一个简单的方法来生成一个访问令牌是使用由Temboo提供了Facebook的OAuth支持。如果您只需要一个令牌,那么您可以使用Facebook OAuth向导,这意味着您不必编写任何代码来生成令牌。详情点击这里:https://www.temboo.com/library/Library/Facebook/

(全面披露:我在Temboo工作)

+0

为什么这是downvoted? – Madbreaks 2013-04-26 17:10:53

+0

@Cormac驱动程序,我访问了tembo.com。我发现他们说要创建一个开发fb账户并创建一个我已经拥有的应用程序,但我如何获得持久的访问令牌? – user2302780 2013-04-26 20:02:24

+0

如果您使用Temboo的InitializeOAuth和FinalizeOAuth Choreos来生成您的访问令牌,请查看名为“LongLivedToken”的FinalizeOAuth choreo上的可选输入 - 它允许您指定您需要长期访问令牌。 – 2013-04-26 20:16:40