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