私はいくつかの研究を行いましたが、FacebookのログインをWebサイトに統合する方法を完全に理解しているようには見えません。
私は、これまで、ログインのタイプを使用せず、ユーザーがページをブラウズしてカートにアイテムを追加できるセッションのみを使用する、昔ながらのphpショップでこれをしようとしています。
Stackoverflowで、ユーザーのメールアドレスとfacebook_idを保持するためにデータベースにテーブルが必要であることをここで読みました。その後、各ユーザーに情報などを提供するために、データベース内の他のテーブルと接続できますか?
あなたのウェブサイトをfacebook&googleアカウントと簡単に統合する他の方法はありますか?私はOpenIDについて何かを読みましたが、その使用法が本当に理解できませんでした:)
だから、私はあなたに私を軌道に乗せるように頼んでいます:)。私はこれに本当に慣れていないので、アドバイスやベストプラクティスなどは大歓迎です!
ありがとう!
Facebookログインの背後にある考え方は簡単です。ユーザーはFacebookページにアクセスしてログインし、Facebookは詳細について心配し、最終的に(サーバーに)親指とID「このユーザーの身元を確認しました。ユーザー174264384」。サーバーは、この情報を自由に使用できます。複数の訪問にわたってユーザーを追跡する場合は、はい、おそらくその番号を追加情報とともにデータベースに保存する必要があります。 Facebookがユーザー174264384がログインしたことを次回通知したときに、関連する情報をデータベースから取得できます。
30,000フィートの概要として役立つことを願っています。 Facebookがユーザーを安全に認証し、この情報をサーバーに渡す方法の詳細は、 PHP SDK によって最適に処理されます。詳細を調べたい場合は、 documentation を読んでください。
OpenIDは基本的に同じことを行いますが、技術的な詳細のみが異なり、Facebookに固有のものではありません。 Oauthは別の非常によく似たテクノロジーです。
JSでこれを行う方法に関する公式のFacebookチュートリアルがあります。
このタイプのテクノロジー(私が間違っていなければOpenConnectと呼ばれ、OAuthに切り替えています)はOpenIDでも同じです。
実際、GoogleはopenIDを使用していますが、それらがどのように機能するのかはよくわかりません。
FacebookConnectの場合、facebook( https://developers.facebook.com/apps )でアプリを登録すると、authの詳細が表示されます https://developers.facebook.com/ docs/authentication / こちら。
アイデアは、facebookに返送する認証コードを取得し、access_tokenを取得するということです。これは、ユーザーがWebサイトで認証されることを意味します。これを$ _SESSION varに保存できます... DBに何も保存する必要はありませんが、特定のセットアップでは、userIDを一意のユーザー識別子として使用できます。
あなたがこのためにjavascript sdkを使用したい場合は、このコードをコピーしてください
<DOCTYPE html>
<html>
<head>
<title>Facebook Login JavaScript Example</title>
<meta charset=”UTF-8″>
</head>
<body>
<script>
// This is called with the results from from FB.getLoginStatus().
function statusChangeCallback(response) {
console.log(‘statusChangeCallback’);
console.log(response);
// The response object is returned with a status field that lets the
// app know the current login status of the person.
// Full docs on the response object can be found in the documentation
// for FB.getLoginStatus().
if (response.status === ‘connected’) {
// Logged into your app and Facebook.
testAPI();
} else if (response.status === ‘not_authorized’) {
// The person is logged into Facebook, but not your app.
document.getElementById(‘status’).innerHTML = ‘Please log ‘ +
‘into this app.';
} else {
// The person is not logged into Facebook, so we’re not sure if
// they are logged into this app or not.
document.getElementById(‘status’).innerHTML = ‘Please log ‘ +
‘into Facebook.';
}
}
// This function is called when someone finishes with the Login
// Button. See the onlogin handler attached to it in the sample
// code below.
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
}
window.fbAsyncInit = function() {
FB.init({
appId : ‘{your-app-id}’,// plaste your app id
cookie : true, // enable cookies to allow the server to access
// the session
xfbml : true, // parse social plugins on this page
version : ‘v2.1′ // use version 2.1
});
// These three cases are handled in the callback function.
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
};
// Load the SDK asynchronously
(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’));
// Here we run a very simple test of the Graph API after login is
// successful. See statusChangeCallback() for when this call is made.
function testAPI() {
console.log(‘Welcome! Fetching your information…. ‘);
FB.api(‘/me’, function(response) {
console.log(‘Successful login for: ‘ + response.name);
document.getElementById(‘status’).innerHTML =
‘Thanks for logging in, ‘ + response.name + ‘!';
});
}
</script>
<fb:login-button scope=”public_profile,email” onlogin=”checkLoginState();”>
</fb:login-button>
<div id=”status”>
</div>
</body>
</html>
この答えを編集することを考えている場合は、このチュートリアルをご覧ください Facebook Login Integration with website
MySQLテーブルを作成する
CREATE TABLE `user_login` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`oauth_provider` enum('google','facebook') COLLATE utf8_unicode_ci NOT NULL,
`oauth_uid` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`username` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`user_email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`gender` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`picture_url` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`register_date` datetime NOT NULL,
`last_update_date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
デモコードを表示 https://datainflow.com/facebook-login-javascript-sdk/