2012-03-07 13 views
0

私は既に存在するWebアプリケーションを持っています。バックエンドは休憩インターフェースです。最初は、ログインするために、ユーザーは登録してから自分の資格情報でログインする必要がありました。しかし、私はFacebookのログインを統合したい。私のサイトにfacebookを統合する

ので、私のRESTインターフェースに私は2つの以上のメソッドに

  1. registerfbUserを追加している:

  2. loginfbUserユーザーアカウントを登録します。ユーザーは後にシステムにログインするために自分のFacebookのアカウントを使用することができます
    は、私はuのことができました

を登録して取得しますse facebook connectとfacebookに接続するグラフapi。さて、loginfbUserはajaxを使って呼び出され、詳細はJSON形式で提供されます。

私の問題は、Facebookのユーザーを認証するにはどのような情報をloginfbUserメソッドに渡すべきかということです。私はfacebook idだけを渡すことはできません。なぜなら、apiはオープンで、誰でもFacebookのidをjson形式でPOSTリクエストすることができるからです。

+0

ユーザーが古い方法でもログインできるようにしますか?新しいユーザーは、新しい方法でも古い方法でもログインすることができますか? –

+0

もちろん、両方の方法 – Noor

答えて

1

AFAIK、Facebook Connectのポイントは、ユーザー名/パスワードの心配は止めてください。 FacebookのIDをユーザーのデータベースに保存し、Graph APIを使用してそのユーザーが現在Facebookにログインしているかどうかを確認することが考えられます。そのようにして、あなたのウェブサイトはFacebook上の存在を介してユーザーを認証します。

$this->_facebook = new Facebook(array(
    'appId' => $this->app_id, 
    'secret' => $this->app_secret, 
    'fileUpload' => true, 
    'cookie' => true 
)); 

try { 
    $this->_fb_userid = $this->_facebook->getUser(); 
} catch (FacebookApiException $e) { 
    // the user is not authenticated! 
    return; 
} 

try { 
    $this->_fb_me = $this->_facebook->api('/me'); 
} catch (FacebookApiException $e) { 
    // API call didn't work, show error... 
    return; 
} 

ユーザーにはJavaScriptを経由して認証を行う場合は、PHP SDKは自動的になります:あなたはJS SDKとPHP SDK、FB認証を必要とするアクションは次のように開始する必要が実行する任意の機能を使用していると仮定すると、

1

ログインしているユーザーについて知っている。 JS SDKはこの情報をクッキー経由でサーバーに送信し、PHP SDKは自動的にそれを読み取ります。

2

私たちの会社では、AJAXを使用してFBの認証を使用して「ログイン」しています。私たちのやり方は簡単です。ユーザーがFBのJS SDKを介してページにログインまたは認証した後、AJAXコールでサーバーにアクセストークンを送信します。このアクセストークンは、私たちのサーバーが/ me api呼び出しをgraph.facebook.comに送信し、そこからFB idを取得することによって相互認証されます。これを行うことで、私たちはこの人とこの人だけであることを確信しています。

これが完了すると、この情報(アクセストークンとユーザーのFacebook ID)はサーバー側のセッションであるため、この同じセッション内の今後のすべての呼び出しでユーザーが正しく認識されます。

出発点がFB App Tabまたはキャンバスアプリの場合、アクセストークンとfbIdはfacebookで署名されたリクエストで送信されます。署名されたリクエストでは、「サイン」してセッションに保存してgraph.facebook.comを呼び出す(これは少し遅くて、パフォーマンス/ UXのボトルネックとなる可能性があります)

関連する問題