2012-05-14 39 views
3

我在我的网站有Facebook应用程序。当我们整合Facebook时,它每次都会导致Facebook登录页面,但我想从mysite登录Facebook。我将为Facebook分别提供登录表单,当我们在mysite登录中输入facebook crendential时,它将登录Facebook而不询问Facebook登录页面。有可能吗?我尝试下面的卷曲功能做但不成功Facebook从外部网站登录

<?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); 
?> 

请帮我做。这是我的任务

在此先感谢

回答

1

不,这是不可能的。

浏览Facebook网站,可以看到在登录表单的源代码中显示CSRF保护的内容。所以你不能在你自己的网站上有一个指向他们的表单。

使用cURL的方式似乎也不会奏效,因为您无法设置Facebook在用户浏览器上发送的Cookie,因为您无法将它们与不同的域相关联。

在这两种情况下,期望别人输入其他站点的登录凭据,充其量只是对他们的密码不安全。 (不是说,Facebook不断尝试通过“朋友发现者”获取我的电子邮件密码)。

1

Facebook不允许直接从第三方应用程序登录。一个人必须使用Facebook网站进行身份验证。

它增加了安全性,因为用户凭证不与第三方应用程序共享,而只与Facebook共享。

+0

谢谢subirkumarsao。 –