【问题标题】:Fail to retrieve facebook cookie with SDK v5使用 SDK v5 检索 facebook cookie 失败
【发布时间】:2016-04-30 05:39:21
【问题描述】:

我正在尝试从 facebook php sdk v4 迁移到 v5。 我正在遵循 facebook developer 支持的步骤。 启用 Cookie:

<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>

我可以看到 cookie "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 变量,或者有人知道我的问题来自哪里?

【问题讨论】:

    标签: javascript php facebook cookies


    【解决方案1】:

    好吧,我的错。第二天早上找到答案:我不得不把$fb配置中的括号去掉

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

    其余的代码可以工作。

    【讨论】:

    • 这到底是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2015-10-29
    相关资源
    最近更新 更多