0

私は自分のWebサイトにFacebookログインを持っており、それをクリックすると、ユーザーがFacebookにサインインするポップアップが起動し、ユーザーが私のサイトを承認していない場合はそれを行います。Facebookスコープ機能を使用してデータをリクエストできることは知っていますが、このデータを取得してデータベースに保存し、メールアドレスなどを保存するにはどうすればよいですか。Facebookを使用してデータをデータベースに保存する登録機能がありますが、疑問に思っていました。この方法でログインと承認を合理化できたら?もしそうなら、私はそれをどのように行いますか?前もって感謝します

4

1 に答える 1

0

セッションで作業できます。

まず、Facebook PHP SDKをここからダウンロードします:https ://github.com/facebook/php-sdk

facebook.phpとbase_facebook.phpを「facebook」フォルダに入れます

dbconfig.phpをフォルダ「config」に配置します。ソース:

<?php

define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'username');
define('DB_PASSWORD', 'password');
define('DB_DATABASE', 'db_name');
$connection = mysql_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD) or die(mysql_error());
$database = mysql_select_db(DB_DATABASE) or die(mysql_error());

?>

フォルダ「config」のfunctions.php。ソース:

<?php

require 'dbconfig.php';

class User {
    function checkUser($uid, $username, $email) 
    {
        $query = mysql_query("SELECT * FROM `users` WHERE oauth_uid = '$uid'") or die(mysql_error());
        $result = mysql_fetch_array($query);
        if (!empty($result)) {
            # User is already present
        } else {
            #user not present. Insert a new Record
            $query = mysql_query("INSERT INTO `users` (id, oauth_uid, username, email) VALUES ('', $uid, '$username', '$email')") or die(mysql_error());
            $query = mysql_query("SELECT * FROM `users` WHERE oauth_uid = '$uid'");
            $result = mysql_fetch_array($query);
            return $result;
        }
        return $result;
    }
}

?>

フォルダ「config」内のfbconfig.php。ソース:

<?php

define('APP_ID', 'xxxxxxxxxxxxxx');
define('APP_SECRET', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

?>

logout.phpソース:

<?php

if (array_key_exists("logout", $_GET)) {
    session_start();
    unset($_SESSION['id']);
    unset($_SESSION['username']);
    session_destroy();
    header("location: home.php"); // or anywhere where you want them to redirect them to
}
?>

使用例login.php。ソース:

<?php

require 'facebook/facebook.php';
require 'config/fbconfig.php';
require 'config/functions.php';

$facebook = new Facebook(array(
            'appId' => APP_ID,
            'secret' => APP_SECRET,
            ));

$user = $facebook->getUser();

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
  }
    if (!empty($user_profile )) {
        # User info ok? Let's print it (Here we will be adding the login and registering routines)

        $username = $user_profile['name'];
        $uid = $user_profile['id'];
        $email = $user_profile['email'];
        $user = new User();
        $userdata = $user->checkUser($uid, $username, $email);
        if(!empty($userdata)){
            session_start();
            $_SESSION['id'] = $userdata['id'];
            $_SESSION['oauth_id'] = $uid;
            $_SESSION['username'] = $userdata['username'];
            $_SESSION['email'] = $userdata['email'];
            header("Location: home.php");
        }
    } else {
        # For testing purposes, if there was an error, let's kill the script
        die("There was an error.");
    }
} else {
    # There's no active session, let's generate one
    $login_url = $facebook->getLoginUrl(array( 'scope' => 'email')); // you can add more scopes
    header("Location: " . $login_url);
}
?>

使用例home.php。ソース:

<?php

//Always place this code at the top of the Page
session_start();
if (!isset($_SESSION['id'])) {
    // Not logged in? Redirect to main page
    header("location: index.php");
}

echo '<h1>Welcome</h1>';
echo 'id : ' . $_SESSION['id'];
echo '<br /><img src="https://graph.facebook.com/' . $_SESSION['oauth_id'] . '/picture?type=large">';
echo '<br />Name : ' . $_SESSION['username'] . ' (' . $_SESSION['oauth_id'] . ')' ;
echo '<br />Email : ' . $_SESSION['email'];
echo '<br />You are login with : ' . $_SESSION['oauth_provider'];
echo '<br />Logout from <a href="logout.php?logout">' . $_SESSION['oauth_provider'] . '</a>';

?>

fbconfig.phpとdbconfig.phpを独自の詳細で編集します。これは私自身のファイルからのコピー/貼り付けですが、Facebookを介してユーザーを認証およびログインし、Facebookが提供する情報を使用してユーザーを作成する方法がわかります。

幸運を!

于 2012-05-05T22:53:04.617 に答える