在上一篇文章中,咱們介紹了怎麼建立本身的服務器,如今咱們開始寫個client端,來測試。html
咱們建立一個MVC項目,叫TestOAuthClientgit
1. 代碼開始github
1)第一步,咱們建立一個MainController,在Index方法裏面寫咱們的邏輯。瀏覽器
2)首先獲取code,若是沒有code,則證實是第一步請求。服務器
3)第一步請求,附上client_id、response_type、redirect_uri、scope、state參數。測試
這裏咱們假如服務端的第一步請求認證的地址爲:http://localhost:65006/OAuth2Server/Authorizethis
client_id是請求端在服務端申請的id;url
response_type爲code;spa
redirect_uri是告訴服務端,獲取code以後返回的地址是什麼;3d
scope自定義;
state自定義。
4)跳轉到驗證服務器。
5)驗證服務器重定向會咱們的請求端後(code不爲空),請求獲取token。
獲取token須要傳送返回的code、grant_type=authorization_code、client_id、client_secret
6)經過服務器返回的token,請求服務端獲取用戶信息。
代碼就幾行,以下:
public ActionResult Index() { string code = Request["code"] ?? ""; if (string.IsNullOrEmpty(code)) { //第一步,請求獲取code(請求OAuth服務器) string client_id = "testclientid"; string response_type = "code"; string redirect_uri = HttpUtility.UrlEncode("http://localhost:61481/Main/Index"); string scope = ""; string state = ""; string url = string.Format ("http://localhost:65006/OAuth2Server/Authorize?client_id={0}&response_type={1}&redirect_uri={2}&scope={3}&state={4}", client_id, response_type, redirect_uri, scope, state); Response.Redirect(url); return null; } else { //第二步,獲取code以後請求獲取token(請求OAuth服務器) RestClient clientToken = new RestClient("http://localhost:65006/OAuth2Server/GetToken"); IRestRequest requestToken = new RestRequest(); requestToken.AddParameter("code", code); requestToken.AddParameter("grant_type", "authorization_code"); requestToken.AddParameter("client_id", "testclientid"); requestToken.AddParameter("client_secret", "testclientsecret"); IRestResponse responseToken = clientToken.Execute(requestToken); string access_token = responseToken.Content.Replace("\"", ""); //第三部,獲取token以後,獲取user信息(請求OAuth服務器) RestClient clientUserInfo = new RestClient("http://localhost:65006/OAuth2Server/UserInfo"); IRestRequest requestUserInfo = new RestRequest(); requestUserInfo.AddParameter("oauth_token", access_token); IRestResponse responseUserInfo = clientUserInfo.Execute(requestUserInfo); string userInfoContent = responseUserInfo.Content; //返回獲取到的用戶信息 return this.Json("userInfoContent=" + userInfoContent, JsonRequestBehavior.AllowGet); } }
源代碼以下: https://github.com/cjt321/TestOAuthClient/
2. 開始調試
1)請求端(TestOAuthClient)的地址爲:http://localhost:61481/Main/Index
2)在瀏覽器上輸入上面地址,會重定向到用戶是否容許受權的頁面。(此頁面是服務端的頁面)
當咱們輸入正確的用戶名&密碼以後,會發現,再請求端能獲取到用戶的信息。
到此,測試結束。
能夠關注本人的公衆號,多年經驗的原創文章共享給你們。