昨天心中一動,想對接一下博客園,因為界面和后台實在是丑陋的像是回到十幾年前。
然后搜了搜,果然有開放的API:https://api.cnblogs.com/help。
需要先申請,昨天傍晚申請,差不多今早九點半左右的樣子就收到回復郵件了,效率還是不錯的。



然后,我就對照着help網站的接口文檔開始搞授權token部分,結果搞這么多接口開發,居然在這栽掉了。
折騰了一上午,居然沒有絲毫進展。

。。。
傍晚的時候繼續,好吧,還是沒有絲毫進展,准備放棄了。
晚上和老婆玩了一局王者。。。。
然后繼續搞這個api,園內找別人之前對接的說明。都試過了,不行:
https://www.cnblogs.com/cmt/p/5741764.html
https://www.cnblogs.com/zhangtingkuo/p/cnblogs-oauth20-get-access-token-and-login.html
好頹廢。
然后又去看了下郵件,試了試改下連接地址:https://oauth.cnblogs.com/connect/token
居然好了。。。。
好吧,這個接口對接過程好曲折,特此紀念一下。
貼上.NET Core請求部分的代碼(未優化)
1 using (var client = new HttpClient()) 2 { 3 client.BaseAddress = new Uri("https://oauth.cnblogs.com"); 4 client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); 5 6 var basicAuth = string.Format("Basic {0}", Convert.ToBase64String(Encoding.UTF8.GetBytes($"{Input.ClientID}:{Input.ClientSecret}"))); 7 var content = new StringContent($"grant_type=client_credentials"); 8 content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); 9 client.DefaultRequestHeaders.Add("Authorization", basicAuth); 10 11 var response = await client.PostAsync("connect/token", content); 12 if (!response.IsSuccessStatusCode) throw new KeyNotFoundException(await response.Content.ReadAsStringAsync()); 13 var result = await response.Content.ReadAsStringAsync(); 14 TokenResponse = JsonConvert.DeserializeObject<CnblogsModel.TokenResponse>(result); 15 16 SetTokenCache(TokenResponse); 17 return RedirectToPage("Index"); 18 }
