ユーザーが自分のFacebookアカウントでログインできるWebサイトを作成しようとしています。ウェブサイトにないときはリクエストをしたり情報を保存したりする必要がないので、データベースは必要ありません。
Facebookでのログインのみを受け入れ、他のログインタイプは必要ありません。ログインページのFacebookボタンを使用した通常のログインと、複数のページにまたがってログインし続ける機能が必要になります。ログアウト機能も追加したいのですが。
PHP SDKをダウンロードし、ページでJavaScript SDKを一緒に使用していますが、非常に問題があります。
それは私だけですか、それともFacebook SDKは完全にダメですか?
私の最初の問題は、ログインページのJavaScript SDKが、認証後にユーザーをメインページにリダイレクトしないことです。現在、ページを手動で更新しています(PHP SDKは、ユーザーがログインしていることを認識し、ユーザーをメインページに送信します)。
もう1つの問題はログアウトです。PHP SDKのgetLogoutURL()関数を使用していて、ユーザーをFacebookからログアウトしますが、アクセストークンはまだ完全に有効であり、PHPはユーザーをログインページに送信することを拒否します。なんで?何も思いつきません。個人的には、Facebookではなく私のWebサイトからユーザーをログアウトさせたいと思います。
Facebookでシームレスなログインシステムを作ろうとしていますが、困っています!FacebookConnectで良いドキュメントがまったく見つからないようです。私は彼らの例を使用していて、このような問題が起こっています。たぶん彼らは良いSDKを作ることができないでしょう。PHPSDKとJavaScriptSDKを使用して、非常に優れたユーザーエクスペリエンスを実現したいのですが、それは不可能なようです。
login.phpのPHPコード
require_once("../fb-sdk/src/facebook.php");
$Facebook = new Facebook(array(
'appId' => 'xx',
'secret' => 'xx',
));
$User = $Facebook->getUser();
if ($User)
{
try
{
// Proceed knowing you have a logged in user who's authenticated.
$UserProfile = $Facebook->api("/me");
} catch (FacebookApiException $e) {
error_log($e);
$User = null;
}
}
if ($User)
{
header("Location: index.php");
}
?>
login.phpのJavaScriptコード
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'xx', // App ID
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
<div class="fb-login-button">Login with Facebook</div>
index.phpのPHPコード
require_once("../fb-sdk/src/facebook.php");
$Facebook = new Facebook(array(
"appId" => "xx",
"secret" => "xx",
));
$User = $Facebook->getUser();
if ($User)
{
try
{
// Proceed knowing you have a logged in user who's authenticated.
$UserProfile = $Facebook->api("/me");
} catch (FacebookApiException $e) {
error_log($e);
$User = null;
}
}
if (!$User)
{
header("Location: login.php");
}
?>