我创建了一个带图形api的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¢er='.$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 :(得分:1)
您是否通过Graph Explorer工具生成访问令牌?如果是这样,那些令牌有2小时的到期时间。
您可以通过Facebook登录/ OAuth流程生成具有60天到期时间的访问令牌,在此过程中,您可以通过单击“允许”授予您的应用程序访问您(或任何用户)Facebook用户帐户的权限。授权对话框上的按钮。获得访问令牌后,您可以将其换成长期令牌。
Facebook OAuth详情:https://developers.facebook.com/docs/reference/dialogs/oauth/
生成访问令牌的一种简单方法是使用Temboo提供的Facebook OAuth支持。如果您只需要一个令牌,那么您可以使用Facebook OAuth向导,这意味着您不必编写任何代码来生成令牌。详情请见https://www.temboo.com/library/Library/Facebook/
(完全披露:我在Temboo工作)