Facebook Graph API,匿名提取信息

时间:2010-10-29 13:27:28

标签: php facebook-graph-api

我知道这个问题之前可能已被问过一百万次,但遗憾的是我无法编译所有这些答案以使其正常工作。

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

您必须检索访问令牌才能使用Graph API搜索用户。我认为没有办法绕过它。至少不使用Graph API。

尝试here使用Graph API搜索用户。您会看到他们正在使用访问令牌。对没有访问令牌的用户尝试search将导致以下错误消息。

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

<强>更新

来自Facebook开发者文档:

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

authentication过程并不复杂。

答案 1 :(得分:1)

当然,这是获取所需信息的快捷方式:

<?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>

在上面提到的Fair之后,这里是您自己获得身份验证设置所需的基本代码。

HTH:)

您可以更改登录按钮的参数,使其不仅仅是“电子邮件”,然后搜索您想要的任何其他内容。