如何在不登录的情况下使用facebook图表API中的数据?

时间:2013-06-01 13:40:58

标签: facebook facebook-graph-api

我正在创建一个关于我自己的个人网站,我想让它从Facebook上拉图像和墙上的帖子并在页面上显示它们,此刻一切正常.....一小时这是怎么回事长访问令牌持续。

我不想使用access_tokens,因为帖子和个人资料图片是公开的,本网站的重点是它更新自己,因为我更新了我的Facebook个人资料

facebook API可以按照我的要求行事(这是为了让照片可以随时拉动而不用担心过期甚至不必登录),或者facebook API不允许这样做而且只是真的用于想在您的网站上使用thair facebook帐户评论或喜欢的人?

我希望我足够清楚......

总结一下,我希望我的网站能够在人们访问网站时提取我个人资料的图片而不必处理access_tokens

1 个答案:

答案 0 :(得分:0)

如果您将“Facebook应用程序”配置为“Web应用程序”,您将获得AppID和AppSecret。使用这些值,您可以在每次加载页面时动态请求新令牌,并将该令牌用于所有请求。如果您在旧令牌过期之前继续请求新令牌,我相信facebook会返回相同的令牌。

这是一个实现此功能的PHP函数:

public static function GetNewAccessToken(){
        try{
            $url = "https://graph.facebook.com/oauth/access_token?client_id=" .   \Core\Config::FB_APPID . "&client_secret=" . \Core\Config::FB_APPSECRET .  "&grant_type=client_credentials";
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output 
            $response = curl_exec($ch);
            curl_close($ch);

            //response will be access_code=<CODE> so we need to strip off the access_code part at the front/
            $token = "";
            if (isset($response) && $response !== FALSE && substr($response, 0, 13) === "access_token="){
                $token = substr($response, 13);
            }
            return $token;
        }
        catch(\Exception $exc){
            return "";
        }
}