串接Google OAuth 2.0 實現第三方登入

文章推薦指數: 80 %
投票人數:10人

為了使用者方便在目前的各大網站的註冊流程中通常除了最基礎的註冊新帳號以外也會提供第三方登入比如說google 登入、facebook 登入,甚至github 登入 ... PHP/Laravel技術筆記 串接GoogleOAuth2.0實現第三方登入 byBen 2021-02-08 writtenbyBen 2021-02-08 TableofContents 前言流程簡介流程細節設定GoogleCredentiailsCode程式碼部份參考資料 前言 為了使用者方便 在目前的各大網站的註冊流程中 通常除了最基礎的註冊新帳號以外 也會提供第三方登入 比如說google登入、facebook登入,甚至github登入等等 這樣的好處是可以讓使用者不須要額外註冊一個新帳號 而是可以直接使用現有的第三方帳號 即可達到註冊登入 達到快速轉換、降低門檻的效果 本文就是要來介紹如何使用GoogleOAauth來實現第三方登入 流程簡介 (來源:Google) 自GoogleAPIConsole取得GoogleOAuth2.0憑證 自GoogleAuthorizationServer取得accesstoken (圖中Requesttoken+Userlogin&consent+Authorizationcode) 檢查使用者願意提供的資料範圍是否正確 (圖中Exchangecodefortoken+Tokenresponse) 送accesstoken給GoogleAPI,驗證正確後回傳使用者資料給我方App使用 (圖中UsetokentocallGoogleAPI) 流程細節 設定GoogleCredentiails step1進入自GoogleAPIConsole step2點選建立憑證→OAuth用戶端ID step3設定同意畫面 step4點選外部 step5輸入相關資訊 標示星星都要填入 比較須要注意的是已授權的重新導向URI 這邊要填入在取得OAuthaccesstoken後的callback網址 以我的例子為例 在取得token後是要進入註冊的流程 所以在這邊會填入/google_next step6確認OAuth用戶端已建立 這邊show出來的就是你的ID和密碼 待會我們會把這筆資料的json檔下載下來用 step7下載憑證json 回到GoogleAPIConsole就可以看到剛剛建立的OAuth用戶端ID 這邊點一下"下載" 把它存起來待會要用 Code程式碼部份 step1依照官方文件使用composer安裝library composerrequiregoogle/apiclient:"^2.7" step2設定取得credentials路徑 publicstaticfunctionAuthUrl() { //New一個Google_Client出來 $client=newGoogle_Client(); //設定剛剛下載下來的json檔路徑 $client->setAuthConfig('/path/to/client_credentials.json'); //設定callback轉址路徑,注意這個路徑必須和上面`step5`的`已授權的重新導向URI`路徑一致 $client->setRedirectUri(f3()->get('uri').'/google_next'); //設定可以OAuth授權的內容以下就以最基本的email及profile資料為例 //如果要更多資料可以參考:https://developers.google.com/identity/protocols/oauth2/scopes $client->addScope('https://www.googleapis.com/auth/userinfo.email'); $client->addScope('https://www.googleapis.com/auth/userinfo.profile'); //建立路徑 $url=$client->createAuthUrl(); //接著就可以使用該路徑來callGoogleCredentials return$url; } step3於callback路徑取得userData 照上面的流程 我們理論上就會在callback取得google回傳的accesstoken 因此我們就可以用這個token來取得userData publicstaticfunctionuserData() { //前半段是一樣的 $client=newGoogle_Client(); $client->setAuthConfig('/path/to/client_credentials.json'); $client->setRedirectUri(f3()->get('uri').'/member/'.$url); //取得google回傳的accesstoken $client->authenticate($_GET['code']); //使用service物件來取得profile及email $service=newGoogle_Service_Oauth2($client); $userData=$service->userinfo->get(); //完成! return$userData; } 根據上面的流程 就可以成功從GoogleOAuth取得使用者資料 因而達到串接Google登入的效果囉! 參考資料 https://xenby.com/b/245-%E6%95%99%E5%AD%B8-google-oauth-2-0-%E7%94%B3%E8%AB%8B%E8%88%87%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97 https://blog.longwin.com.tw/2019/03/google-php-sdk-oauth-login-2019/ https://petertc.medium.com/oauth-2-0-196a5550b668 0comment 0 FacebookTwitterPinterestEmail Ben previouspost UML:循序圖簡介 nextpost 聯盟行銷API串接–以聯盟網為例 Youmayalsolike 用PHP實作... 2021-09-02 用PHP實作... 2021-08-11 [編譯vs.... 2021-04-15 MYSQL:使用... 2021-03-17 聯盟行銷API... 2021-02-25 UML:循序圖... 2021-01-09 使用PHP安... 2020-12-23 PHP排序u... 2020-11-24 PHP指定日期... 2020-10-13 第三方Cook... 2020-09-22 LeaveaCommentCancelReply Savemyname,email,andwebsiteinthisbrowserforthenexttimeIcomment. 文章分類 技術筆記(32) Javascript(3) PHP/Laravel(19) Python(3) SQL(4) 投資理財(12) 興趣陳列(7) 雜學清談(5) 近期文章 WordPress+GCP+SSL:給你最完整的免費網站架設教學 2019-11-29 用PHP實作WebService-一次搞懂XML、SOAP、WSDL(下) 2021-09-02 用PHP實作WebService-一次搞懂XML、SOAP、WSDL(上) 2021-08-11 [反脆弱]讀後心得 2021-07-11 使用Python批次新增/修改SQL 2021-06-24 [為什麼要睡覺?:睡出健康與學習力、夢出創意的新科學]閱讀心得 2021-05-10 TagCloudLocking 嘻哈 成長 投資 時間 街舞 課程心得 財富自由 通往財富自由之路 彙整 2021年9月 (1) 2021年8月 (1) 2021年7月 (1) 2021年6月 (1) 2021年5月 (1) 2021年4月 (2) 2021年3月 (1) 2021年2月 (3) 2021年1月 (1) 2020年12月 (1) 2020年11月 (2) 2020年10月 (1) 2020年9月 (1) 2020年8月 (2) 2020年7月 (1) 2020年6月 (1) 2020年5月 (1) 2020年4月 (2) 2020年3月 (1) 2020年2月 (6) 2020年1月 (5) 2019年12月 (4) 2019年11月 (11) PopularPosts 1 WordPress+GCP... 2 【景氣循環投資】-讀後感 3 投資最重要的事:長期且有價值 AboutMe HI!我是BenChen 目前是菜鳥網頁後端工程師 興趣是讀書、聽書、跳舞、搞音樂、學新東西 設立這個部落格的目的就是要分享所學 因為我相信幫助到我的,也肯定可以幫助到你 因為學習必定帶來成長 而【成長】,就是最終獲得自由人生的關鍵! 點我可以看到更多自介喔! Keepintouch Facebook Email RecentComments「WEIJUN」在〈WordPress+GCP+SSL:給你最完整的免費網站架設教學〉發佈留言「Ben」在〈WordPress+GCP+SSL:給你最完整的免費網站架設教學〉發佈留言「Tommy」在〈WordPress+GCP+SSL:給你最完整的免費網站架設教學〉發佈留言「Ben」在〈WordPress+GCP+SSL:給你最完整的免費網站架設教學〉發佈留言「macbp」在〈WordPress+GCP+SSL:給你最完整的免費網站架設教學〉發佈留言



請為這篇文章評分?