Php 通过curl auth访问facebook失败
我通过curl使用FB授权。到现在为止,在半年的时间里,所有的工作都很顺利。但在过去的几天里,我发现了一条信息:Php 通过curl auth访问facebook失败,php,facebook-graph-api,curl,Php,Facebook Graph Api,Curl,我通过curl使用FB授权。到现在为止,在半年的时间里,所有的工作都很顺利。但在过去的几天里,我发现了一条信息: [{"error":{"message":"This_authorization_code_has_been_used_","type":"OAuthException","code":100,"fbtrace_id":"HuUHKJv\/zGu"}}] => $params = array( 'client_id' => FACE
[{"error":{"message":"This_authorization_code_has_been_used_","type":"OAuthException","code":100,"fbtrace_id":"HuUHKJv\/zGu"}}] =>
$params = array(
'client_id' => FACEBOOK_ID,
'redirect_uri' => PATH_ROOT.REDIRECT_URI,
'response_type' => 'code',
'scope' => 'email, user_birthday'
);
<a href="<?php echo FACEBOOK_OAUTH . '?' . urldecode(http_build_query($params))?>" class="facebook-icon-edit">Change</a>
callback:
if(isset($_GET['code']) and strlen($_GET['code']) > 100){
$url = 'https://graph.facebook.com/oauth/access_token';
$tokenInfo = null;
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . FACEBOOK_ID . "&redirect_uri=" . urlencode(PATH_ROOT.REDIRECT_URI)
. "&client_secret=" . FACEBOOK_SECRET . "&code=" . $_GET['code'];
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL, $token_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
parse_str(curl_exec($curl), $tokenInfo);
curl_close($curl);
echo "<pre>";
print_r($tokenInfo);
echo "</pre>";
///the three last rows get the message written above
$params=数组(
“客户端id”=>FACEBOOK\u id,
'redirect_uri'=>PATH_ROOT.redirect_uri,
“响应类型”=>“代码”,
'范围'=>'电子邮件,用户\u生日'
);
回拨:
如果(isset($获取['code'])和strlen($获取['code'])>100){
$url='1https://graph.facebook.com/oauth/access_token';
$tokenInfo=null;
$token_url=”https://graph.facebook.com/oauth/access_token?"
“client_id=“.FACEBOOK_id.”和redirect_uri=“.urlencode(PATH_ROOT.redirect_uri))
.“&client_secret=“.FACEBOOK_secret.”&code=“.$”获取['code'];
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$token_URL);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
parse_str(curl_exec($curl),$tokenInfo);
curl_close($curl);
回声“;
打印(令牌信息);
回声“;
///最后三行得到上面写的消息
到目前为止,错误的来源是facebook的响应是一个字符串。
现在bacame是一个json。
所以我改变了
$tokenInfo= curl_exec($curl);
$tokenInfo = json_decode($tokenInfo, true);
到
消息:此授权码已被使用
出现此消息可能是由于多个应用于一个页面的原因您是否可以发布一些代码来演示您正在执行的操作,并详细说明如何调用它,以及与服务器设置相关的任何内容(例如任何反向代理/重定向/重写等)?您问题中的错误消息不完整。请发布整个消息。如果这是几天前开始的,则很可能与API v2.2关闭有关。由于API v2.3,从该端点返回访问令牌的格式已更改,它现在返回JSON。另请参阅:这很奇怪,但在developers.facebook.com i found版本API v2.3它很久以前就在developers.facebook.com的帐户中设置为API v2.3版本
$tokenInfo= curl_exec($curl);
$tokenInfo = json_decode($tokenInfo, true);