我的网站中有Facebook应用程序。当我们集成Facebook时,它每次都会导致Facebook登录页面,但我想从我的网站登录Facebook。我会给脸书单独的登录表格,当我们在mysite登录中输入facebook crendential时,它会登录facebook而不问facebook登录页面。可以做到吗?我尝试使用以下 curl 函数执行但不成功
<?php
$EMAIL = "fb_user_email";
$PASSWORD = "password";
function cURL($url, $header=NULL, $cookie=NULL, $p=NULL)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_NOBODY, $header);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
if ($p) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
}
$result = curl_exec($ch);
if ($result) {
return $result;
}
else {
return curl_error($ch);
}
curl_close($ch);
}
$a = cURL("https://login.facebook.com/login.php?login_attempt=1",true,null,"email=$EMAIL&pass=$PASSWORD");
preg_match('%Set-Cookie: ([^;]+);%',$a,$b);
$c = cURL("https://login.facebook.com/login.php?login_attempt=1",true,$b[1],"email=$EMAIL&pass=$PASSWORD");
preg_match_all('%Set-Cookie: ([^;]+);%',$c,$d);
for($i=0;$i<count($d[0]);$i++)
$cookie.=$d[1][$i].";";
echo cURL("http://graph.facebook.com/oauth/authorize?client_id=APP_IDredirect_uri=APP_REDIRECT_URL&display=touch&scope=publish_stream, user_checkins, publish_checkins, offline_access",null,$cookie,null);
?>
请帮我做。这是我的任务
提前致谢
不,这是不可能的。
看一眼Facebook网站,就会发现登录表单的源代码中似乎有一些CSRF保护。因此,您不能在自己的网站上有一个指向他们的表单。
以您似乎试图尝试的方式使用 cURL 也行不通,因为您无法在用户的浏览器上设置 Facebook 发送的 cookie,因为您无法将它们与其他域相关联。
在任何一种情况下,期望人们输入您上另一个站点的登录凭据充其量是训练他们的密码不安全。(并不是说Facebook不断尝试通过"朋友查找器"获取我的电子邮件密码)。
Facebook不允许从第三方应用程序直接登录。人们必须使用Facebook网站进行身份验证。
它提供了额外的安全性,因为用户凭据不与第三方应用程序共享,而只与Facebook共享。