Php 存储访问令牌
我已经尝试解决这个问题三天了,对于那些熟悉opengraphapi的人来说,这真的很简单。我是Facebook集成新手,但有一些PHP经验 基本上,我所要做的就是从用户那里检索以下信息并将其存储在数据库中 Facebook用户ID: 名称 性别 电子邮件 我已通过以下方式完成了用户ID、姓名和性别:Php 存储访问令牌,php,facebook,facebook-authentication,Php,Facebook,Facebook Authentication,我已经尝试解决这个问题三天了,对于那些熟悉opengraphapi的人来说,这真的很简单。我是Facebook集成新手,但有一些PHP经验 基本上,我所要做的就是从用户那里检索以下信息并将其存储在数据库中 Facebook用户ID: 名称 性别 电子邮件 我已通过以下方式完成了用户ID、姓名和性别: $contents = file_get_contents ('https://graph.facebook.com/'.$user); $json=json_decode($contents,tr
$contents = file_get_contents ('https://graph.facebook.com/'.$user);
$json=json_decode($contents,true);
$userid = $json['id'];
$username = $json['name'];
$usergender = $json['gender'];
$useremail = $json['email'];
这是可行的,我知道我需要请求权限才能访问我使用以下代码所做的电子邮件:
$app_id = "211665122244023";
$canvas_page = "http://apps.facebook.com/midcitymafia/";
$auth_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,publish_actions";
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
但如何获取访问令牌,然后使用它从graph检索电子邮件
##更新,这是我当前的代码,似乎仍然无法让它工作。。。
require 'src/facebook.php';
$app_id = "211665122244023";
$canvas_page = "http://apps.facebook.com/midcitymafia/";
$auth_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,publish_actions";
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
echo("<script> top.location.href='" . $auth_url . "'</script>");
} else {
$graph = json_decode(file_get_contents("https://graph.facebook.com/".$user_id . "/?accesstoken=" .$data['access_token']));
}
$userid = $graph->id;
$username = $graph->name;
$usergender = $graph->gender;
$useremail = $graph->email;
?>
<br>
<?php echo 'ID: ' . $userid; ?>
<br>
<?php echo 'Name: ' . $username; ?>
<br>
<?php echo 'Gender: ' . $usergender; ?>
<br>
<?php echo 'Email: ' . $useremail; ?>
需要'src/facebook.php';
$app_id=“2116651221244023”;
$canvas_page=”http://apps.facebook.com/midcitymafia/";
$auth_url=”https://www.facebook.com/dialog/oauth?client_id="
. $应用程序id。“&重定向_uri=”。urlencode($canvas\u页面)。“&scope=email,publish\u actions”;
$signed_request=$_request[“signed_request”];
列表($encoded_sig,$payload)=分解('.',$signed_请求,2);
$data=json_解码(base64_解码(strtr($payload,'-'','+/')),true);
if(空($data[“user\u id”])){
echo(“top.location.href=”。$auth_url。””;
}否则{
$graph=json\u解码(文件\u获取\u内容(“https://graph.facebook.com/“$user_id.”/?accesstoken=“.data['access_token']);
}
$userid=$graph->id;
$username=$graph->name;
$usergender=$graph->gender;
$useremail=$graph->email;
?>
已签名的\u请求
本身包含用户访问\u令牌
在您的情况下,access\u token
位于$data['access\u token']
存储用户
access\u令牌并不是一个好主意,因为它们只提供了很短的一段时间,之后就过期了。要获得永久access\u token
您需要向用户请求offline\u access
权限(我个人不建议这样做,因为您可以在不需要offline\u access
的情况下完成大多数事情,在许多情况下,应用程序access\u token
可能满足您的需要)。谢谢,现在我不能把它储存在我的数据库里,对吗?我的意思是,它们过期了,对吗?我该如何更新它?我已经阅读了“撤销页面”,但并不真正理解…我现在已经看到了这段代码^^^检查主要帖子,仍然似乎不起作用。。谢谢