我知道这个问题之前可能已被问过一百万次,但遗憾的是我无法编译所有这些答案以使其正常工作。
我想编写一个使用facebook图谱API的PHP代码,搜索一个配置文件(例如按名称),然后将此信息提取到本地商店。我修改了facebook图形API,但它使用了OAuth和我不需要的大量开销任务。因为我不想代表特定的用户帐户使用API。我只是想匿名使用它,或者甚至是一个样本用户,它不一定是我正在搜索的这些用户的朋友。 如果有人能告诉我这是否可行,或者甚至让我更多地澄清我的问题,我将不胜感激:)
提前致谢。
答案 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:)
您可以更改登录按钮的参数,使其不仅仅是“电子邮件”,然后搜索您想要的任何其他内容。