Facebook graph api *格式错误的访问令牌-但它';这是我得到的令牌(PHP)

Facebook graph api *格式错误的访问令牌-但它';这是我得到的令牌(PHP),facebook-graph-api,facebook-access-token,malformed,Facebook Graph Api,Facebook Access Token,Malformed,我的FB应用程序有这个问题 我有两个文件。。 1) mainApp.php。。和。。 2) asyncApp.php。。(处理数据、交付内容和垃圾…) 现在 当用户登录时,一切正常。。我获取访问令牌并将其保存到SESSION-Var…(此处仅处理mainApp.php)。。但是 当我通过jquery.load()调用async.php时,例如。。我总是得到最好的答案 {“错误”:{“消息”:“格式错误的访问令牌..oO” 但令牌与我在mainApp.php中从FB获得的相同( 主应用程序:

我的FB应用程序有这个问题

我有两个文件。。 1) mainApp.php。。和。。 2) asyncApp.php。。(处理数据、交付内容和垃圾…)

现在

  • 当用户登录时,一切正常。。我获取访问令牌并将其保存到SESSION-Var…(此处仅处理mainApp.php)。。但是

  • 当我通过jquery.load()调用async.php时,例如。。我总是得到最好的答案 {“错误”:{“消息”:“格式错误的访问令牌..oO”

但令牌与我在mainApp.php中从FB获得的相同(

主应用程序: 这样我就可以拿到代币

if(isset($_GET["code"])) {
                $code = $_GET["code"];    
                $url = 'https://graph.facebook.com/oauth/access_token?client_id='.$appID.'&redirect_uri='.urlencode($appRedirectURI).'&client_secret='.$appSecret.'&code='.$code;
                $curl_handle=curl_init();                   
                curl_setopt($curl_handle,CURLOPT_URL,$url);
                curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,6);
                curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
                $buffer = curl_exec($curl_handle);                  
                curl_close($curl_handle); 

                if(strpos($buffer, 'access_token=') === 0) {                        
                    //if you requested offline acces save this token to db for use later                        
                    $token = str_replace('access_token=', '', $buffer);
                    $_SESSION['fbToken'] = $token;                                          
稍后我调用async.php,它应该在用户墙上做一个提要

$attachment =  array(
                        'access_token' => $_SESSION['fbToken'],
                        'message' => 'dfdfdf',
                        'name' => 'sdfdsf',
                        'link' => 'http://www.mbla.de',
                        'description' => 'sdfdsf',
                        'picture'=> '',
                        'actions' => json_encode(array('name' => $action_name,'link' => $action_link))
                        );

                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/me/feed');
                        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
                        curl_setopt($ch, CURLOPT_POST, true);
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output 
                        $result = curl_exec($ch);
                        curl_close ($ch);

如果有人能帮助我,那就太好了。我现在已经痛苦了将近两周了。(

欢迎来到Stack Overflow


  • 当您直接调用
    async.php
    时会发生什么,它能工作吗
  • 当脚本
    print\u r()
    包含
    $\u会话的内容时会发生什么情况,是否填充了该脚本?
    
    • 如果您通过一个ajax调用来完成,并通过Firebug/Chrome Inspector检查输出,会怎么样
  • 查看附加的代码(
    async.php
    ),您似乎没有将参数正确地传递到Facebook。curl选项
    CURLOPT_POSTFIELDS
    不将数组作为参数。相反,它应该构造为查询字符串:

    curl_setopt($ch, CURLOPT_POSTFIELDS, 'param1=value&param2=value&param3=value');
    
    为了方便起见,我倾向于这样做:

    curl_setopt($ch, CURLOPT_POSTFIELDS, htmlspecialchars(http_build_query(array(
        "param1" => 'value',
        "param2" => 'value',
        "param3" => 'value'
    ))));