PHP - 利用社交帐户登录


可以要求用户在社交媒体登录(也称为 SSO)的帮助下登录 Web 应用程序。这样,用户就不需要创建新帐户。相反,用户可以使用他们现有的社交媒体帐户信息登录。社交媒体登录的一些示例包括:Google、Facebook、LinkedIn、Apple。

在本章中,我们将解释如何使用 Facebook 凭据激活登录 PHP 应用程序。

添加 Facebook 登录功能的第一步是创建 Facebook 应用程序。访问 https://developers.facebook.com/apps/creation/ 并使用您的 Facebook 帐户登录。

PHP Facebook Login 1

接下来,输入您要创建的 Facebook 应用程序的名称 -

PHP Facebook Login 2

进入 App 设置并获取 Application IDsecret code -

PHP Facebook Login 3

选择平台作为网站 -

PHP Facebook Login 4

接下来,您需要在 PHP 设置 Facebook SDK。从“https://packagist.org/packages/facebook/php-sdk”下载适用于 PHP 的 Facebook SDK 或使用 ComposerComposer 需要 “facebook/graph-sdk-v5”。

SDK 文件解压到 PHP 应用程序可访问的目录中。

要在 PHP 代码配置 Facebook SDK,请在 PHP 文件中包含 Facebook SDK 自动加载器: require_once __DIR__ 。'/vendor/autoload.php';

设置应用的访问令牌和应用密钥 -


$app_id = 'YOUR_APP_ID';
$app_secret = 'YOUR_APP_SECRET';

接下来,创建 Facebook 登录按钮。创建 HTML 按钮并添加 Facebook 登录 JavaScript SDK 以触发登录流 -


 <button id="facebook-login-button">使用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 的用户数据以验证访问权限。