提供されているサンプルコードを使用して、私はlightopenid経由で自分のGoogleアカウントを使って自分のアプリケーションにログインすることができました。私はログインがセッション全体にわたって持続できるように、アイデンティティをクッキーに保存しました。lightopenid /ログアウトを使用してログイン情報を保持する
このIDを再検証して、ユーザーが自分のサイトをナビゲートする際にログインする方法を教えてください。私は彼らの名前を右上隅に表示しておきたい/ログアウトに応答したい。
IDを設定してvalidate()を呼び出すと、新しいlightopenidオブジェクトを作成できません。私のlightopenidオブジェクトはそれほど多くない配列で、validate()はfalseを返します。
さらに、ユーザーがログアウトできるようにリンクを作成するにはどうすればよいですか?
(私のサイトにユーザーを取得するために取り組んでいる)ログインコード:
$openID = new LightOpenID($_SERVER['HTTP_HOST']);
$openID -> required = array(
'namePerson',
'namePerson/first',
'namePerson/last',
'contact/email'
);
if (!$openID -> mode) {
// TRYING TO LOG IN
$openID -> identity = 'https://www.google.com/accounts/o8/id';
redirect($openID -> authUrl());
} else {
$page_data = array(
"page_title" => "Login",
"additional_css" => array(),
"additional_js" => array()
);
if ($openID -> mode == "cancel") {
$login_error = array(
"login_error" => "Google authentication cancelled"
);
$this -> load -> view('global/header',$page_data);
$this -> load -> view('login/form',$login_error);
$this -> load -> view('global/footer');
} else {
if ($openID -> validate()) {
$openID_identity = $openID -> identity;
$openID_data = $openID -> getAttributes();
$first_name = $openID_data["namePerson/first"];
$last_name = $openID_data["namePerson/last"];
$email = $openID_data["contact/email"];
$login = array(
"first_name" => $first_name,
"last_name" => $last_name
);
// SESSION COOKIE
$this -> session -> set_userdata(array(
"user_id" => 0,
"identity" => $openID_identity,
"first_name" => $first_name,
"last_name" => $last_name,
"email" => $email
));
redirect("/login/welcome");
} else {
$login_error = array(
"login_error" => "Google authentication failed"
);
$this -> load -> view('global/header',$page_data);
$this -> load -> view('login/form',$login_error);
$this -> load -> view('global/footer');
}
}
}
コードはテキストの束のように見えますが...多分それが問題です。 – stormdrain
テキストの束を編集するために編集されたテキスト束。 – MikkyX
ああ!私はOAを使用していませんが、ドキュメントを見ていると、スマートモードは認証を維持する必要があり、Lightopenidは「ダム」モードしかありません。ただし、authを追跡するだけであれば、dbセッションを使用してopenIDのIDを確認することもできます。ユーザー名にはdb cookieを使用し、ログアウト時にはcookieを削除します。 – stormdrain