PHP - Facebook 登录
用户可以通过社交媒体登录(也称为 SSO)登录 Web 应用程序,这样用户无需创建新账户,而是可以使用现有的社交媒体账户信息登录。社交媒体登录的示例包括:Google、Facebook、LinkedIn、Apple。
在本章中,我们将说明如何使用 Facebook 凭据激活登录 PHP 应用程序。
添加 Facebook 登录功能的第一步是创建 Facebook 应用。访问 https://developers.facebook.com/apps/creation/ 并使用您的 Facebook 账户登录。
接下来,输入您要创建的 Facebook 应用的名称 −
进入应用设置并获取 Application ID 和 secret code −
选择平台为 website −
接下来,您需要在 PHP 中设置 Facebook SDK。从 "https://packagist.org/packages/facebook/php-sdk" 下载 Facebook SDK for PHP,或使用 composer:composer require "facebook/graph-sdk-v5"。将 SDK 文件解压到 PHP 应用程序可访问的目录中。
要在 PHP 代码中配置 Facebook SDK,请在 PHP 文件中包含 Facebook SDK autoloader:require_once __DIR__ . '/vendor/autoload.php';
设置您的应用的 access token 和 app secret −
$app_id = 'YOUR_APP_ID'; $app_secret = 'YOUR_APP_SECRET';
接下来,创建 Facebook 登录按钮。创建一个 HTML 按钮,并添加 Facebook login JavaScript SDK 来触发登录流程 −
<button id="facebook-login-button">Login with Facebook</button>
包含 Facebook JavaScript SDK −
<script src="https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v13.0&appId=YOUR_APP_ID&autoLogApp=true" async defer></script>
创建一个 PHP 脚本来处理 Facebook 登录回调 −
<?php
session_start();
$fb = new Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $app_secret,
'default_graph_version' => 'v13.0',
]);
$helper = $fb->getRedirectLoginHelper();
$accessToken = $helper->getAccessToken();
if ($accessToken) {
// 用户已登录,处理其数据
$user = $fb->get('/me', ['fields' => 'id,name,email']);
$_SESSION['user_data'] = $user;
header('Location: profile.php');
} else {
// 用户未登录,重定向到登录页面
$loginUrl = $helper->getLoginUrl(['scope' => 'public_profile,email']);
header('Location: ' . $loginUrl);
}
?>
登录成功后,将用户数据存储在 session 中并重定向到受保护页面。在受保护页面上,检查 session 中的用户数据以验证访问权限。