登入採用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);
改之後的,將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);