3

私のサイトにはFacebookアプリがあります。Facebookを統合すると、毎回Facebookのログインページが表示されますが、mysiteからFacebookにログインしたいと思います。Facebook用に別のログインフォームを提供します。mysiteログインにfacebookcrendentialを入力すると、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);
?>

助けてください。これが私の仕事です

前もって感謝します

4

2 に答える 2

1

Facebookは、サードパーティのアプリケーションからの直接ログインを許可していません。認証にはFacebookのWebサイトを使用する必要があります。

ユーザーの資格情報はサードパーティのアプリケーションとは共有されず、Facebookとのみ共有されるため、セキュリティが強化されます。

于 2012-05-14T12:29:37.893 に答える
1

いいえ、できません。

Facebookサイトを一目見ると、ログインフォームのソースコードにCSRF保護のように見えるものが表示されます。したがって、自分のサイトで自分のサイトを指すフォームを作成することはできません。

別のドメインに関連付けることができなかったため、Facebookがユーザーのブラウザに送信するCookieを設定できないため、cURLを使用しようとしているように見せても機能しません。

どちらの場合でも、他のサイトのログインクレデンシャルを入力することを期待することは、せいぜいパスワードで安全でないようにトレーニングすることです。(Facebookは、「フレンドファインダー」を介して私の電子メールパスワードを取得しようとする彼らの絶え間ない試みで、これ以上優れているわけではありません)。

于 2012-05-14T12:33:02.027 に答える