Php Facebook图形API,匿名获取信息

Php Facebook图形API,匿名获取信息,php,facebook-graph-api,Php,Facebook Graph Api,我知道这个问题以前可能被问过一百万次,但不幸的是,我无法汇编所有这些答案来让它发挥作用 我想编写一个使用facebook graph API的PHP代码,搜索一个配置文件(例如按名称),然后将此信息抓取到本地商店。我修改了FacebookGraphAPI,但它使用了OAuth和大量我不需要的开销任务。因为我不想代表特定的用户帐户使用API。我只是想匿名使用它,或者甚至与一个示例用户一起使用,他不一定是我正在搜索的这些用户的朋友。 如果有人能告诉我这是否可行,或者让我进一步澄清我的问题,我将不胜感

我知道这个问题以前可能被问过一百万次,但不幸的是,我无法汇编所有这些答案来让它发挥作用

我想编写一个使用facebook graph API的PHP代码,搜索一个配置文件(例如按名称),然后将此信息抓取到本地商店。我修改了FacebookGraphAPI,但它使用了OAuth和大量我不需要的开销任务。因为我不想代表特定的用户帐户使用API。我只是想匿名使用它,或者甚至与一个示例用户一起使用,他不一定是我正在搜索的这些用户的朋友。 如果有人能告诉我这是否可行,或者让我进一步澄清我的问题,我将不胜感激:)


提前谢谢

您必须检索访问令牌才能使用Graph API搜索用户。我认为没有办法解决这个问题。至少在Graph API中不是这样

尝试使用Graph API搜索用户。您将看到他们正在使用访问令牌。尝试为没有访问令牌的用户重新分配将导致以下错误消息

{
    "error": {
    "type": "OAuthException",
    "message": "An access token is required to request this resource."
    }
}
更新

从Facebook开发者文档:

“Facebook身份验证使您的应用程序能够代表Facebook用户与Graph API交互,并且它提供了一种强大的跨Web、移动和桌面应用程序的单点登录机制。”


过程并没有那么复杂。

当然,这里有一个快速获取所需信息的方法:

<?PHP

define('FACEBOOK_APP_ID', 'yourappIDhere');
define('FACEBOOK_SECRET', 'yourFBsecretkeyhere');

function get_facebook_cookie($app_id, $application_secret) {
    $args = array();
    if(isset($_COOKIE['fbs_' . $app_id])){
        parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
    }

    ksort($args);
    $payload = '';
    foreach ($args as $key => $value) {
        if ($key != 'sig') {
            $payload .= $key . '=' . $value;
        }
    }
    if(isset($args['sig'])){
        if (md5($payload . $application_secret) != $args['sig']) {
            return null;
        }
        else
            return $args;
    }
    else
        return null;
}

$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);

?>


<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
</head>
<body>
<?php if ($cookie) { ?>
  Your user ID is <?PHP echo $cookie['uid']; ?>
<?PHP 
    $user = json_decode(file_get_contents('https://graph.facebook.com/me/access_token=' . $cookie['access_token']))->data;

} else { 
?>
  <fb:login-button perms="email"></fb:login-button>
<?php } ?>

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
           cookie: true, xfbml: true});
  FB.Event.subscribe('auth.login', function(response) {
    window.location.reload();
  });
</script>
</body>
</html>

您的用户ID为
FB.init({appId:'',状态:true,
cookie:true,xfbml:true});
FB.Event.subscribe('auth.login',函数(响应){
window.location.reload();
});
在上面提到的内容之后,下面是您自己获得身份验证设置所需的非常基本的代码

HTH:)


您可以更改“登录”按钮的参数,使其不仅仅是“电子邮件”,然后通过您可能需要的任何其他方式进行搜索。

谢谢您的评论:)。我能理解浏览器上应该有一个登录的用户打开会话吗?我很确定你必须登录到Facebook。至少我不知道另一种获取访问令牌的方法。实际上,访问facebook将在后端,我不需要任何登录按钮来让用户登录facebook。我只想获取用户帐户上的公共信息。谢谢你的回复:)