2016-01-23 48 views
3

我想從Facebook的PHP SDK的V4遷移到V5。 我正在關注facebook developper的支持步驟。 Cookie的啓用:未能檢索Facebook的cookie與SDK v5

<body id="home" > 

<div id="fb-root"></div> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId : 'xxx', 
     cookie: true, // This is important, it's not enabled by default 
     version: 'v2.2' 
    }); 
    }; 

    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 

我可以看到餅乾 「fbsr_appid」 被設置在Firefox控制檯。

當我調用(在我的ajax請求中)PHP函數getJavaScriptHelper時,我不檢索訪問令牌。 ($的accessToken未設置)

$fb = new Facebook\Facebook([ 
    'app_id' => '{xxx}', 
    'app_secret' => '{xxx}', 
    'default_graph_version' => 'v2.2', 
]); 

$helper = $fb->getJavaScriptHelper(); 

try { 
    $accessToken = $helper->getAccessToken(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    exit; 
} 

if (! isset($accessToken)) { 
    echo 'No cookie set or no OAuth data could be obtained from cookie.'; 
    exit; 
} 

這裏是觸發點擊登錄按鈕的JavaScript:

logInWithFacebook = function() { 
    FB.login(function(response) { 
    if (response.authResponse) { 
    var fbid = response.authResponse.userID;  
    //document.cookie = 'fb_token=' + FB.getAuthResponse().accessToken; 
    $.ajax({ 
    type : 'GET', 
    url : 'ajx/traitementloginFB.php' , 
    dataType: "json", 
    data: {'fbid':bid,'accesstoken':FB.getAuthResponse().accessToken}, 
    beforeSend : function() { 
    }, 
    success : function(data){ 
    var libele = data[0].libele; 
    var retour = data[0].retour; 
    if (retour=="Nok") { 
     $('#modalmsg3').html(libele); 
    } else if (retour=="Ok" || retour=="Logged in"){ 
     window.location = 'home';    
    }   
    } , 
    error : function(e){ 
    } 
}); 
    } else { 
    alert('User cancelled login or did not fully authorize.'); 
    } 
}); 
return false; 
}; 

有手動設置$的accessToken變量的方式,或沒有人知道我的問題來自哪裏?

回答

1

好吧,我的壞。第二天早上找到答案:我不得不壓制括號$ fb配置

$fb = new Facebook\Facebook([ 
    'app_id' => ' **{** xxx **}** ', 
    'app_secret' => ' **{** xxx **}** ', 
    'default_graph_version' => 'v2.2', 
]); 

其餘的代碼工作。

+0

這究竟意味着什麼? – Milos