2010-12-28 12 views
0

facebookを使用してログインするには、php curlで自分のアカウントでログインする必要があります。facebookを使用するウェブサイトにログインするにはPHPカール経由で接続する

私のお気に入りのアプリケーションの一つは、私は例のサイトとして取るよ

:あなたはすでにFacebookのに接続されている場合、それは、自動ログインに成功した:あなたが見ることができるようにMousehunt

、それがログインする(もちろん)Facebookのを使用していますそれ以外の場合は、Facebookのログインをポップアップします。

どうすればphp curlでログインできますか?私はカールについていくつか知っている&クッキー(cookiejar、cookiefile、ポストなど)があまりないです。

データを投稿する対象のURLはどれですか?ユーザーがログインすると、そのサイトにどのように戻ることができますか?

+0

私はそれができるとは思わない –

+0

それは本当に不可能ですか? – apelliciari

+0

私はカールだけではこれが可能ではないとも考えています。 – Alfred

答えて

2

FBログインの仕組みについて説明します。もちろん、デスクトップアプリケーションに使用される別の方法がありますが、これは可能ですが、このWebサイトでは使用しません。

だから、HERESに取引:

ログインボタンは、ウェブサイトのAPIキーといくつかの任意の情報を含む、Facebookのサーバー上でリンクを開きます。ここまでは順調ですね。あなたはそれを簡単にシミュレートすることができます。

プライバシーのものを受け入れると、ウェブサイトにリダイレクトされます。それをシミュレートすることもできます。

しかし、その後は負担が来る:

あなたはにリダイレクトされます場所は、ハッシュタグ(#)の後にFacebookのトークンが含まれています。

ウェブサイトは、このトークンをJavascriptで読み取って、それを使用してfacebook APIにクエリして、あなたの身元を確認することができます。

このようにした理由は簡単です:

考えてみてください。誰もがウェブサイトの名前でリクエストを偽り、あなたの私的なデータを読むことができます。しかし、ハッシュタグの後のすべては、要求が向けられたサーバーによって決して読み込めません。 Webブラウザはそれを渡さず、HTTP標準に違反し、エラーを引き起こします。

アクセスするにはjavascriptを使用する方法があります。これは、リクエストを処理しているWebサイト(フェイスブックのリダイレクト先)でのみ可能です。そして、Facebookのリダイレクト先のドメインは、アプリケーションキーの所有者によってロックされます。

ここでは、JavaScriptはセキュリティの重要な部分です。

多くの可能な解答があるので、実際には非常に安全ではないと考えられますが、このログインの形態が非常に広がっている理由は非常に簡単です。 openid。

これを要約すると、完全にjavascript対応のブラウザをシミュレートする必要があります。それは部分的には可能ですが、非常に複雑で、そのための解決策はありません。

1

よく、方法があるかもしれません。 facebookリクエストのように見えますが、パーミッションスコープには何も署名しません。 これは基本的に、アプリケーション/ウェブサイトに許可されているよりも多くの許可を与えることができるということを意味します。

通常の方法でウェブサイトのパーミッションを許可して、Cookieを保存することができます。

これらのクッキーをカールと一緒に送信することができます。 ウェブサイトがサーバー側のログイン認証を使用している場合は、アクセストークンがパーマネントであるため、ログインしている可能性があります。

しかし、そのハックが機能し続けるという保証はありません。

+0

これは実際に私のソリューションは、すでに実装されている!しかしそれほどエレガントではない:P – apelliciari

関連する問題