PHP怎么实现Facebook登录?

文章导读
Previous Quiz Next 用户可以通过社交媒体登录(也称为 SSO)登录 Web 应用程序,这样用户无需创建新账户,而是可以使用现有的社交媒体账户信息登录。社交媒体登录的示例包括:Google、Facebook、LinkedIn、Apple。
A A

PHP - Facebook 登录



Previous
Quiz
Next

用户可以通过社交媒体登录(也称为 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

进入应用设置并获取 Application ID 和 secret code −

PHP Facebook Login 3

选择平台为 website −

PHP Facebook Login 4

接下来,您需要在 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 中的用户数据以验证访问权限。