我只在移动设备上收到此错误消息。重定向到登录正常工作,用户被正确地重定向回应用程序。我没有错。然后,如果我第二次访问该应用程序(第一次使用后几秒),file_get_contents将返回400错误请求 - 这是代码 - 帮助高度赞赏: - )
$ code = $ _REQUEST [“code”]; if(empty($ code)){ $ my_url ='https://m.facebook.com/apps/'.$app_id.'/sid='.$surveyid.'&country='.$country; $ dialog_url =“https://www.facebook.com/dialog/oauth?client_id=” 。 $ app_id。 “& redirect_uri =”。 urlencode($ my_url)。 “&安培;范围= user_birthday”;
echo("<script> top.location.href='" . $dialog_url . "'</script>");
exit();
}
$my_url = 'https://m.facebook.com/apps/'.$app_id.'/?sid='.$surveyid.'&country='.$country;
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code;
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token="
. $params['access_token'];
$user = json_decode(file_get_contents($graph_url));
$me['id']=$user->id;
$me['gender']=$user->gender;
$me['first_name']=$user->first_name;
$me['last_name']=$user->last_name;
$me['birhtday']=$user->birthday;
答案 0 :(得分:0)
您是否第二次检查会话是否可用?
我看到会话变量可能缺失
答案 1 :(得分:0)
然后,如果我第二次访问该应用程序(第一次使用后几秒),file_get_contents将返回400错误请求
如果您使用PHP SDK而不是“手动”对API执行请求,那么您将得到一个异常,其中包含一条错误消息,该消息应该已经解释了正在发生的事情 - 请考虑将来使用它,它会使很多事情都比较容易,包括调试。
至于当前的问题,您似乎每次都尝试将code
参数换成新的访问令牌 - 但将来不可能再这样做了,请参阅https://developers.facebook.com/roadmap/#december-2012, “OAuth授权码的新安全限制”:
我们只允许授权代码一次交换访问令牌
对于新创建的应用程序,默认情况下启用此迁移 - 您现在可以禁用它,它应该按预期工作。但是在2012年12月5日之后,您将不得不拥有一个无需尝试多次交换访问令牌代码的解决方案。