iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
Mobile Development

用 Flutter 開發一個 Android App 吧系列 第 23

用 Flutter 開發一個 Android App 吧 - Day 23. GitHub 身份驗證、登入(改)

本系列同步發表在 個人部落格,歡迎大家關注~

GitHub 身份驗證

GitHub 提供的身份驗證方式有兩種:

  • 基礎認證(Basic Authentication):

    向 GitHub API server 發出請求時,在請求 header 中夾帶密碼即可。
    Authorization: Basic [YOUR PASSWORD]

  • Token 認證(Token Authentication):

    向 GitHub API server 發出請求時,在請求 header 需夾帶 token。
    Authorization: Token [YOUR TOKEN]
    而 token 獲取方式需透過 Oauth2 的認證流程。

接下來會先用基礎認證方式作串接。

程式碼上的身份驗證

到目前為止,第二階段有關連接 GitHub API 方面,我都是以 personal token 作認證。
不過這樣只能拿到本人的帳戶資料而已。

在程式碼上面都是利用 github 這套件提供的函數作操作;今天仔細研究了一下這套件的認證部份,它提供了三種認證模式:

  • Authentication.anonymous() : 匿名模式,其實這模式沒有作任何認證;但在 GitHub 上你不做登入,還是有看到 public 的資訊的權限,不過它無法獲取登入的用戶資料,所以這裡就先不用它了。
  • Authentication.basic(this.username, this.password) : 基礎模式,對應前一節的 基礎認證
  • Authentication.withToken(this.token) : Token 模式,對應前一節的 Token 認證

小提醒:

  • 雖然用 基礎認證 的方式進行非常容易,不過個人覺得這是較不安全的作法。
  • 使用 Oauth2 的認證方式,雖然流程比較繁瑣,但相對應得到的安全性會較高;而且 Oauth2 認證方式非常常見。
  • Oauth2 相關的架構,是需要花些時間實做跟整理的,本系列後如果有想要知道相關開發內容的大大,可以在底下留言跟我說,我會在 31 day+ 發表文章。

lib/services/github_api.dartgetGithubApiClient 函數內作相對應的調整。

day23-1.png

登入 - 改

好了,講述的那麼多,登入畫面這邊就來實際上連接 API 囉~

day23-2.png

  • 宣告兩個 TextEditingController,方便登入時取值。
  • 在兩個 TextFormField 加入 controller 屬性。
  • onPressed 裡調用 getGithubApiClient,並簡易的作 try catch 例外處理。

--

成果

day23-3.gif

今天就先寫到這邊,明天來收尾第二階段吧~

參考


上一篇
用 Flutter 開發一個 Android App 吧 - Day 22. 首頁的 GitHub Trending
下一篇
用 Flutter 開發一個 Android App 吧 - Day 24. 登入表單(GithubLoginForm)、Toast 訊息
系列文
用 Flutter 開發一個 Android App 吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言