Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过curl auth访问facebook失败_Php_Facebook Graph Api_Curl - Fatal编程技术网

Php 通过curl auth访问facebook失败

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

我通过curl使用FB授权。到现在为止,在半年的时间里,所有的工作都很顺利。但在过去的几天里,我发现了一条信息:

    [{"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);