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))轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/213591.html
標籤:其他
上一篇:時序約束(二)
