哈囉大家好!
昨天想了很久要做的新功能,突然想到登入功能做了GitHub的OAuth,所以想要趁機玩玩看GitHub的API。
這個功能也會分成上下部分,今天主要會說明如何實現這個功能,以及需要做什麼權限設定開可以讓使用者順利更新README profile。
那就開始吧!
在GitHub登入後的個人首頁,若有一個repo的名稱(repo必須設置public)和使用者的GitHub名稱一樣並且有添加README.md的話,主頁會顯示預設的自我介紹介面如下:
我想要實現的功能為「在該筆resume預覽頁面新增"更新README"按鈕,當使用者按下按鈕後,就會更新resume的內容到README.md」。
首先使用者必須確保他們在GitHub帳戶已經有一個public repo並且已經存在README.md(因為預計會利用PUT Request來更新資料)。
想要讓使用者可以透過resume builder來更新GitHub內容的話,在發送請求時必須附上OAuth Tokens。
當使用者透過GitHub OAuth登入後,就會獲得一個OAuth Token,就可以發送GitHub API請求,例如讀取repos, 編輯內容⋯⋯等。
因為要更新原本README.md裡面的內容,所以必須進行權限設定,針對repo的scope進行設定,確保resume builder有代表使用者修改他們GitHub content的資格。
具體步驟如下:
接下來就到GitHub官方API文檔閱讀如何發送請求:
(這裡我用的是「創建或上傳檔案」)
官方文檔還蠻貼心的,有給三種發送請求格式的範例,也有說明哪些參數是必須的(例如路徑中一定要包含owner, repo, path,body則是要有message和content)
所以大致上發送的API URL會長這樣:https://api.github.com/repos/OWNER/REPO/contents/PATH
因為我想要更新的是README.md,所以PATH這邊會換成README.md,OWNER和REPO則會替換成使用者的GitHub名稱。
透過$githubUser獲得OAuth Token:
$githubUser = Socialite::driver($provider)->user();
$token = $githubUser->token;
那今天對於新功能的說明就簡單到這裡!
明天要來實現功能(今天花很多時間在看文檔,目前撰寫程式碼測試也都沒有成功,看來我還要花時間debug一下
那就明天見啦 byebye!