0

我用图形 api 创建了一个 facebook place serach。但是访问密钥每两个小时过期一次。为此,我实现了以下代码

 $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

谢谢是提前。

4

1 回答 1

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 工作)

于 2013-04-23T13:17:15.580 回答