在PHP中创建Google登录页面
在本文中,我將解釋如何在您的PHP網站中集成Google登錄。 我們將使用Google OAuth API,這是一種將Google登錄名添加到您的網站的簡便而強大的方法。
作為Web用戶,您可能已經經歷了為不同站點管理不同帳戶的麻煩-特別是當您具有用于不同服務的多個密碼,并且某個網站要求您在其站點上創建另一個帳戶時。
為了解決這個問題,您可以提供單點登錄功能,以允許訪問者使用其現有憑據在您的網站上開設一個帳戶。 如今,許多網站都允許用戶使用他們在Google,Facebook或其他流行服務上的現有帳戶登錄。 對于新用戶而言,這是一種便捷的方式,可以在第三方站點上進行注冊,而無需使用其他用戶名和密碼注冊新帳戶。
Google登錄如何工作
首先,讓我們了解Google登錄在您網站上的工作流程。
在站點的登錄頁面上,用戶可以選擇兩個選項來登錄。第一個選項是提供用戶名和密碼(如果他們已經在您的站點中擁有帳戶)。 另一種是使用他們現有的Google帳戶登錄您的網站。
當他們單擊“ 使用Google登錄”按鈕時,它將啟動Google登錄流程并將用戶帶到Google網站進行登錄。 到達那里后,他們將使用自己的Google憑據登錄,然后將其重定向到同意頁面。
在同意頁面上,將要求用戶授予與第三方網站共享其Google帳戶信息的權限。 在這種情況下,第三方站點是他們要使用其Google帳戶登錄的站點。 將為他們提供兩個選項:它們可以允許或拒絕。
一旦他們允許與第三方站點共享信息,它們將被帶回到發起Google登錄流程的第三方站點。
此時,用戶已使用Google登錄,并且第三方站點有權訪問用戶個人資料信息,該信息可用于創建帳戶和進行用戶登錄。
這就是在您的網站上集成Google登錄的基本流程。 在本文的其余部分,我們將在一個工作示例中使用PHP實現此登錄流程。
設置用于Google登錄的項目
在本節中,我們將介紹將Google登錄名與您的PHP網站集成所需的基本設置。
創建一個Google API項目
首先,您需要使用Google創建一個應用程序,以便您可以通過Google注冊您的網站。 它使您可以設置有關網站的基本信息以及一些技術細節。
使用Google登錄后,打開Google Developers控制臺 。 這將打開Google信息中心頁,如以下屏幕截圖所示。
從左上方菜單中,單擊“ 選擇項目”鏈接。 這將打開一個彈出窗口,如以下屏幕截圖所示。
單擊“ 新建項目”鏈接,它將要求您輸入項目名稱和其他詳細信息。 如下例所示,填寫必要的詳細信息。
單擊創建按鈕以保存您的新項目。 您將被重定向到“ 儀表板”頁面。 點擊左側欄中的憑據 ,然后轉到OAuth同意屏幕標簽。
在此頁面上,您需要輸入有關應用程序的詳細信息,例如應用程序名稱,徽標以及其他一些詳細信息。 填寫必要的詳細信息并保存。 出于測試目的,只需輸入應用程序名稱即可。
接下來,單擊左側邊欄中的憑據 。 這將顯示“ 憑據”選項卡下的“ API憑據”框,如以下屏幕截圖所示。
點擊客戶端憑據> OAuth客戶端ID ,為我們的應用程序創建一組新的憑據。 這將為您顯示一個屏幕,要求您選擇適當的選項。 在本例中,選擇Web應用程序選項,然后單擊“ 創建”按鈕。 系統將要求您提供有關您的應用程序的更多詳細信息。
輸入上面的屏幕截圖中顯示的詳細信息并保存! 當然,您需要根據應用程序設置來設置重定向 URI 。 這是登錄后將重定向用戶的URL。
至此,我們已經創建了Google OAuth2客戶端應用程序,現在我們應該能夠使用該應用程序在我們的網站上集成Google登錄信息。 請記下客戶端ID和客戶端密鑰 價值觀 在我們這一端的應用程序配置過程中將需要這樣做。 在編輯應用程序時,您始終可以找到客戶端ID和客戶端密鑰 。
安裝Google PHP SDK客戶端庫
在本部分中,我們將看到如何安裝Google PHP API客戶端庫。 您可以選擇兩個選項來安裝它:
作曲方式
如果您更喜歡使用Composer進行安裝,則只需運行以下命令。
$composer require google/apiclient:"^2.0"就是這樣!
下載版本
如果您不想使用Composer,也可以從官方API頁面下載最新的穩定版本。
在我的示例中,我只是使用了Composer。
如果您繼續這樣做,那么現在您應該已經配置了Google應用程序并安裝了Google PHP API客戶端庫。 在下一個也是最后一個部分,我們將在PHP網站中看到如何使用此庫。
客戶端庫集成
回想一下,在配置Google應用程序時,我們必須在應用程序配置中提供重定向URI ,并將其設置為重定向到http://localhost/redirect.php 。 現在是時候創建redirect.php文件了。
繼續并使用以下內容創建redirect.php 。
<?php require_once 'vendor/autoload.php';// init configuration $clientID = '<YOUR_CLIENT_ID>'; $clientSecret = '<YOUR_CLIENT_SECRET>'; $redirectUri = '<REDIRECT_URI>';// create Client Request to access Google API $client = new Google_Client(); $client->setClientId($clientID); $client->setClientSecret($clientSecret); $client->setRedirectUri($redirectUri); $client->addScope("email"); $client->addScope("profile");// authenticate code from Google OAuth Flow if (isset($_GET['code'])) {$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);$client->setAccessToken($token['access_token']);// get profile info$google_oauth = new Google_Service_Oauth2($client);$google_account_info = $google_oauth->userinfo->get();$email = $google_account_info->email;$name = $google_account_info->name;// now you can use this profile info to create account in your website and make user logged in. } else {echo "<a href='".$client->createAuthUrl()."'>Google Login</a>"; } ?>讓我們看一下代碼的關鍵部分。
我們需要做的第一件事是包括autoload.php文件。 這是Composer的一部分,可確保自動加載我們在腳本中使用的類。
require_once 'vendor/autoload.php';接下來,有一個配置部分,它通過設置必要的設置來初始化應用程序配置。 當然,您需要用相應的值替換占位符。
// init configuration $clientID = '<YOUR_CLIENT_ID>'; $clientSecret = '<YOUR_CLIENT_SECRET>'; $redirectUri = '<REDIRECT_URI>';下一節將實例化Google_Client對象,該對象將用于執行各種操作。 除此之外,我們還初始化了應用程序設置。
// create Client Request to access Google API $client = new Google_Client(); $client->setClientId($clientID); $client->setClientSecret($clientSecret); $client->setRedirectUri($redirectUri);接下來,我們添加了電子郵件和個人資料范圍,因此在登錄后,我們可以訪問基本的個人資料信息。
$client->addScope("email"); $client->addScope("profile");最后,我們有一段代碼使登錄流程變得神奇。
// authenticate code from Google OAuth Flow if (isset($_GET['code'])) {$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);$client->setAccessToken($token['access_token']);// get profile info$google_oauth = new Google_Service_Oauth2($client);$google_account_info = $google_oauth->userinfo->get();$email = $google_account_info->email;$name = $google_account_info->name;// now you can use this profile info to create account in your website and make user logged in. } else {echo "<a href='".$client->createAuthUrl()."'>Google Login</a>"; }首先,讓我們看一下else部分,該部分將在您直接訪問腳本時觸發。 它顯示一個鏈接,該鏈接將用戶帶到Google進行登錄。 請務必注意,我們已經使用了Google_Client的createAuthUrl方法來構建OAuth URL。
單擊Google登錄鏈接后,用戶將被帶到Google網站進行登錄。 登錄后,Google會通過傳遞code查詢字符串變量將用戶重定向回我們的網站。 這就是if塊中的PHP代碼將被觸發的時候。 我們將使用代碼交換訪問令牌。
獲得訪問令牌后,我們就可以使用Google_Service_Oauth2服務來獲取已登錄用戶的個人資料信息。
因此,通過這種方式,一旦用戶登錄到Google帳戶,您就可以訪問個人資料信息。 您可以使用此信息在您的站點上創建帳戶,也可以將其存儲在會話中。 基本上,這取決于您如何使用此信息以及如何響應用戶登錄到您的站點這一事實。
有用的PHP表單腳本
今天,我們討論了如何將Google登錄信息與PHP網站集成。 如果用戶不想為您的服務創建另一個帳戶,則可以使用該帳戶登錄現有的Google帳戶。
如果您有任何疑問,請在下面的評論中告訴我!
翻譯自: https://code.tutsplus.com/tutorials/create-a-google-login-page-in-php--cms-33214
總結
以上是生活随笔為你收集整理的在PHP中创建Google登录页面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DW常用快捷键大全
- 下一篇: php curl文件上传,在 php 中