php - 从外部网站登录

标签 php facebook curl facebook-login

我的站点中有 Facebook 应用程序。当我们集成 Facebook 时,它每次都会进入 facebook 登录页面,但我想从我的网站登录 facebook。我将为 facebook 提供单独的登录表单,当我们在 mysite 登录中输入 facebook 凭据时,它将登录到 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 更好,因为他们不断尝试通过“ friend 查找器”获取我的电子邮件密码)。

关于php - 从外部网站登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10583326/

相关文章:

PHP - 使用 CURL 将图像文件上传到其他域

php - 将图片从 Library Photos iOS 上传到 cakephp

php - 在 PHP 上进行多重 INSERT 的最简单方法

iphone - 在iPhone App中获取Facebook用户名

ios - iOS 6 上的 Facebook SDK 3.1.1 登录但 token 立即过期

c# - Unity Share 脚本 Android 到 iOS

javascript - 既然 Twitter 需要 JavaScript,我该如何抓取它们?

php - PHP 中的 EVP_BytesToKey 实现

php - 在 Laravel 中清理用户输入

node.js - 无法安装 Node 7.5.0