php – Facebook登录错误:无法打开流:HTTP请求失败! HTTP / 1
发布时间:2020-12-13 13:23:58 所属栏目:PHP教程 来源:网络整理
导读:我试图按照这个例子从 here创建一个服务器端登录到Facebook,但没有运气.在第7步中,当我尝试使用令牌交换代码并将其存储在会话中以供以后使用时,我总是会收到此错误: file_get_contents(): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Re
我试图按照这个例子从
here创建一个服务器端登录到Facebook,但没有运气.在第7步中,当我尝试使用令牌交换代码并将其存储在会话中以供以后使用时,我总是会收到此错误:
file_get_contents(): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request 我知道这已经多次询问了,但我仍然无法解决这个问题,因为按照this question,我尝试使用cURL,但它仍然不起作用,它只是返回false. Other question告诉我使用PHP SDK,但我不知道使用哪种方法.所以我在这里完全迷失了. 这是我调用登录表单的代码: <a href="<?php echo LOGIN_URL; ?> ?>" class="btn btn-primary">Login with Facebook</a> 其中LOGIN_URL定义为: define("LOGIN_URL",$facebook->getLoginUrl(array("redirect_uri" => APP_URL . "fb_login"))); 在fb_login中,我有这个代码: $app->get("/fb_login",function() use($app,$facebook) { $code = $_REQUEST["code"]; $token_url = "https://graph.facebook.com/oauth/access_token?" . "client_id=" . APP_ID . "&redirect_uri=" . APP_URL . $_SESSION["request_uri"] // Previous URL . "&client_secret=" . APP_SECRET . "&code=" . $code; $response = file_get_contents($token_url); // Doesn't work $params = null; parse_str($response,$params); $_SESSION["access_token"] = $params["access_token"]; // Let's try with cURL... // $ch = curl_init(); // curl_setopt($ch,CURLOPT_URL,$token_url); // curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); // $output = curl_exec($ch); // Returns false // curl_close($ch); $graph_url = "https://graph.facebook.com/me?access_token=" . $params["access_token"]; $user = json_decode(file_get_contents($graph_url)); echo("Hello " . $user->name); var_dump($code); die(); }); 任何帮助表示赞赏.谢谢你.
要直接回答这个问题,问题很可能是你没有urlencode(使URL传输安全)重定向URL.最快的解决方案是:
$token_url = "https://graph.facebook.com/oauth/access_token?" . "client_id=" . APP_ID . "&redirect_uri=" . urlencode(APP_URL . $_SESSION["request_uri"]) . "&client_secret=" . APP_SECRET . "&code=" . $code; 但是,我还建议您查看Facebook SDK,因为这样可以帮到您. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |