2017-10-07 10 views
0

私のウェブサイトにFacebookのログイン情報を追加したいのですが、私のスクリプトはうまくいきますが、この方法が正しいかどうかわかりません。 。私にはほとんど質問がありません。ウェブサイトにFacebookログインを追加する正当な方法

スクリプト:

function statusChangeCallback(response) 
    { 
    if (response.status === 'connected') { 
     testAPI(); 
    } else if (response.status === 'not_authorized') { 
     console.log('still not authorized!'); 
    } else { 
     console.log("not connected, not logged into facebook, we don't know"); 
    } 
    } 

    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'APP_ID', 
     cookie  : true, 
     xfbml  : true, 
     version : 'v2.8' 
    }); 
    checkLoginState(); 
    FB.AppEvents.logPageView(); 
    }; 

    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

    function checkLoginState() { 
     FB.getLoginStatus(function(response) { 
     statusChangeCallback(response); 
    }); 
    } 

    function testAPI() { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', { fields: 'name,email,gender' }, function(response) { 
     console.log('Successful login for: ' + response.name); 
     document.getElementById('status').innerHTML = 
     'Thanks for logging in, ' + response.name + '!'; 
     window.location.replace('http://www.example.com'); 
    }); 
    } 

ボタンの表示:ログイン成功後

<div class="fb-login-button" data-onlogin="checkLoginState()" data-max-rows="1" data-size="medium" data-button-type="login_with" data-show-faces="false" data-auto-logout-link="false" data-login-text="Sign in with Facebook"></div> 
  1. は、私は、電子メールのIDを渡すことで、メンバー-only.phpにリダイレクトします。上記のスクリプトでは、私はwindow.location.replace( 'http://www.example.com')と書いています。 example.comの代わりに、私は私のPHPファイル名を与えることができますか?

  2. appIdはすべての人が見ることができますが、それは問題ありませんか?それとも秘密にしておく必要がありますか?

  3. ユーザーが初めて訪れる場合は、データベースに登録する必要がありますか? 2回目から、そのユーザーをどのように識別できますか?

ありがとうございます。

+0

このクライアントサイドのみを処理するべきではありません。サーバ側の部分にPHP SDKを使用します。共有SDKを使用してJS SDKと一緒に動作します。 – CBroe

+0

これで、ID、電子メール、他の詳細が必要な場合はバックエンドに渡し、ユーザーが初めて訪れた場合、またはユーザーが戻ってきた場合は、データベース内のIDを確認してmembers-only.phpにリダイレクトします。我々はIDだけを確認する?リターンユーザーを形成する?申し訳ありませんが、多くのご質問をいただきましたが、初めて私はfb loginを実装しています。 – Bharath

+0

アクセストークンのみをサーバーに送信し、そこから追加情報を要求します。アプリケーションスコープのユーザーIDをデータベースに格納する(VARCHARまたは類似のデータ型) – CBroe

答えて

0
  1. window.location.replace('http://www.example.com/members-only.php');
  2. App IDを公開しても問題ありません。アクセストークンとApp Secretには注意してください。彼らは一般公開されることはありません。
  3. ユーザーを識別するために必要なのはIDだけです。残りはキャッシュしたい場合は、あなた次第です。
+0

idをmembers-only.phpに渡すにはどうすればいいですか?それはどんなアヤックスコールですか?IDは2回目からユーザーを識別するのに十分だと言うことができます。私の友達のIDを知っていれば、簡単に渡してmember-only.phpを呼び出して詳細を取得できますか?それは安全ですか? members-only.phpファイルに – Bharath

+0

が含まれている場合は、そのユーザーが承認されているかどうかを確認する必要があります。たとえば、ログイン後にアクセストークンをajax呼び出しに渡してトークンをセッションに格納することができます。 members-only.phpにリダイレクトし、セッションにトークンがあるかどうかを確認し、apiでトークンを使用しようとします(たとえば、/ meエンドポイントへの単純な呼び出し)。もちろん、正しいユーザーサーバー側をチェックするだけで安全です。 – luschn

+0

IDを取得するためにaccess_tokenを使用しますか?もちろん電子メールやその他の詳細も。一般的には、ユーザーを識別するためにidを使用します。これはid、電子メールのためだけにすべてのこの混乱を主にやっているようです。私は正しいですか?もしそうなら、私は1分以内に私のFacebookのユーザーのIDを取得することができますし、セキュリティはどこですか? – Bharath

関連する問題