You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP+MySQL网站中实现Google、Facebook、Github第三方登录

实现Google、Facebook、GitHub第三方登录的PHP方案

Google登录实现

  • 你用的Google云平台就是专门配置谷歌登录的,步骤如下:
    1. 在平台创建项目,启用「Google 登录」API,完成OAuth同意屏幕配置,获取客户端ID和客户端密钥。
    2. 用Composer安装官方SDK:composer require google/apiclient:^2.0
    3. 核心代码逻辑:
      • 初始化客户端:
        $client = new Google_Client();
        $client->setClientId('你的客户端ID');
        $client->setClientSecret('你的客户端密钥');
        $client->setRedirectUri('你的回调URL');
        $client->addScope('email');
        $client->addScope('profile');
        
      • 生成登录链接:$authUrl = $client->createAuthUrl();,前端跳转此链接即可引导用户授权
      • 回调页面获取用户信息:
        if (isset($_GET['code'])) {
            $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
            $client->setAccessToken($token);
            $oauth = new Google_Service_Oauth2($client);
            $userInfo = $oauth->userinfo->get();
            // 将$userInfo中的邮箱、昵称、谷歌用户ID存入MySQL
        }
        

Facebook登录实现

  • 需要到Facebook开发者平台创建应用:
    1. 创建应用后添加「Facebook 登录」产品,配置与项目一致的回调URL,获取应用ID和应用密钥。
    2. 安装SDK:composer require facebook/graph-sdk
    3. 核心逻辑:
      • 初始化SDK并生成登录链接:
        $fb = new Facebook\Facebook([
            'app_id' => '你的应用ID',
            'app_secret' => '你的应用密钥',
            'default_graph_version' => 'v18.0',
        ]);
        $helper = $fb->getRedirectLoginHelper();
        $permissions = ['email'];
        $loginUrl = $helper->getLoginUrl('你的回调URL', $permissions);
        
      • 回调页面获取用户信息:
        try {
            $accessToken = $helper->getAccessToken();
            $response = $fb->get('/me?fields=id,name,email', $accessToken);
            $user = $response->getGraphUser();
            // 将用户信息存入MySQL
        } catch(Facebook\Exceptions\FacebookResponseException $e) {
            // 处理API返回错误
        } catch(Facebook\Exceptions\FacebookSDKException $e) {
            // 处理SDK调用错误
        }
        

GitHub登录实现

  • 在GitHub的开发者设置中配置:
    1. 进入「Settings」→「Developer settings」→「OAuth Apps」,创建新应用,设置回调URL,获取客户端ID和客户端密钥。
    2. 无需SDK,直接通过HTTP请求实现:
      • 生成登录链接:https://github.com/login/oauth/authorize?client_id=你的客户端ID&scope=user:email
      • 回调页面获取访问令牌:
        $code = $_GET['code'];
        $tokenData = http_build_query([
            'client_id' => '你的客户端ID',
            'client_secret' => '你的客户端密钥',
            'code' => $code
        ]);
        $context = stream_context_create([
            'http' => ['method' => 'POST', 'content' => $tokenData]
        ]);
        $tokenResponse = file_get_contents('https://github.com/login/oauth/access_token', false, $context);
        parse_str($tokenResponse, $token);
        
      • 获取用户信息:
        $userContext = stream_context_create([
            'http' => ['header' => 'Authorization: token ' . $token['access_token']]
        ]);
        $userInfo = json_decode(file_get_contents('https://api.github.com/user', false, $userContext), true);
        $emailInfo = json_decode(file_get_contents('https://api.github.com/user/emails', false, $userContext), true);
        // 提取用户昵称、ID、邮箱存入MySQL
        

新手必注意事项

  • 所有平台配置的回调URL必须和项目中的完全一致,包括协议(http/https)、域名、路径,否则会直接触发授权失败。
  • MySQL用户表建议包含字段:id(自增主键)、provider(第三方类型,如google/facebook/github)、provider_id(第三方用户ID)、email、nickname,用provider+provider_id做唯一索引,避免同一用户重复注册。
  • 登录成功后要通过PHP会话($_SESSION)记录用户状态,实现页面鉴权。

内容的提问来源于stack exchange,提问作者Pranay Dubey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:57:35