GitHub受權登陸沒法獲取受權帳號信息

java開發bug問題:GitHub受權登陸沒法獲取受權帳號信息

項目場景:

在作仿碼問論壇項目例子,照着一個視頻寫,作到登陸採用GitHub第三方受權登陸,遇到了一個坑,視頻中那個大佬實現,我卻出不來, 一時不知道爲何,後來查閱許多資料才順利完成,固然,如今那個項目已經完成了

問題描述:

登陸採用GitHub第三方受權登陸時,檢查返回的token信息無誤,接着根據token得到對應的GitHub的User信息,發現它返回爲空,沒法得到user信息,後臺報沒有受權的權限,當時本身就沒有想明白,中間反覆調式,最終定位到根據返回的token沒法獲取對應的user信息,反正這中間花了很多時間去查閱資料,瞭解受權登陸時的問題,發現沒有人遇到個人問題,當時還懷疑過是否是返回的token錯,後來測試了一下發現token沒有問題,只能問大神,大神說讓我多調式一下,說了一下思路,在我都快放棄的時候,忽然在一篇博客看到了,我將以前改以前和改以後分享出來你們就明白,這就是一個坑

改以前的寫法,我是這樣傳遞,直接將參數信息放到了url攜帶過去的,發現沒法獲取user信息

java

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裏傳遞過去git

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))
相關文章
相關標籤/搜索