GitHub授權登入無法獲取授權賬號資訊

2020-11-13 14:00:49

java開發bug問題:GitHub授權登入無法獲取授權賬號資訊

專案場景:

在做仿碼問論壇專案例子,照著一個視訊寫,做到登入採用GitHub第三方授權登入,遇到了一個坑,視訊中那個大佬實現,我卻出不來, 一時不知道為什麼,後來查閱許多資料才順利完成,當然,現在那個專案已經完成了

問題描述:

登入採用GitHub第三方授權登入時,檢查返回的token資訊無誤,接著根據token獲得對應的GitHub的User資訊,發現它返回為空,無法獲得user資訊,後臺報沒有授權的許可權,當時自己就沒有想明白,中間反覆調式,最終定位到根據返回的token無法獲取對應的user資訊,反正這中間花了不少時間去查閱資料,瞭解授權登入時的問題,發現沒有人遇到我的問題,當時還懷疑過是不是返回的token錯,後來測試了一下發現token沒有問題,只能問大神,大神說讓我多調式一下,說了一下思路,在我都快放棄的時候,突然在一篇部落格看到了,我將之前改之前和改之後分享出來大家就明白,這就是一個坑

改之前的寫法,我是這樣傳遞,直接將引數資訊放到了url攜帶過去的,發現無法獲取user資訊

public GithubUser getGithubUser(String accessToken){
  //get請求
  OkHttpClient client = new OkHttpClient();
  Request request = new Request.Builder()
  .url("https://api.github.com/user?access_token=" + accessToken)
   .build();
  try {
   //這一步有問題 debug出發現這一步報錯
   Response  response = client.newCall(request).execute();
   String string = response.body().string();

   GithubUser githubUser = JSON.parseObject(string, GithubUser.class);

解決方案:

請將access_token通過作為Authorization HTTP header中的引數傳輸,而不是作為url中的引數明文傳輸

改之後的,將token放到header裡傳遞過去


public GithubUser getGithubUser(String accessToken){
  //get請求
  OkHttpClient client = new OkHttpClient();
  Request request = new Request.Builder()

   .url("https://api.github.com/user?")
   .header("Authorization","token "+accessToken)
   .build();
  try {
   
   Response  response = client.newCall(request).execute();
   String string = response.body().string();

   GithubUser githubUser = JSON.parseObject(string, GithubUser.class);

原因分析:

【Github】更新官方推薦的使用access_token安全存取API的方式,用Authorization HTTP header代替query paramet,舊方式即將被廢棄**


感謝下面這篇部落格給我解決答案,謝謝

([https://blog.csdn.net/kuaileky/article/details/104217757](https://blog.csdn.net/kuaileky/article/details/104217757))