收集的一些资料
http://baike.baidu.com/view/3948029.htm。
使用百度的OAuth服务进行测试
代码下载:http://yunpan.cn/QtNuCR9I4jDz8。
html代码
1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="OAuthoStudy.Index" %> 2 3 <!DOCTYPE html> 4 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head runat="server"> 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 <title></title> 9 <script src="Javascript/Ext/ext-all-debug.js"></script> 10 </head> 11 <body> 12 <form id="form1" runat="server"> 13 <div> 14 <button id="GetCode">获取授权码</button> 15 授权码:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 16 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="获取用户信息" /> 17 </div> 18 </form> 19 </body> 20 </html> 21 <script type="text/javascript"> 22 Ext.get('GetCode').on('click', function (e) { 23 var url = 'https://openapi.baidu.com/oauth/2.0/authorize'; 24 var params = { 25 response_type: 'code', 26 client_id: 'hdFhQoUiu9GdeqBzPStXf9li', 27 redirect_uri: 'oob', 28 scope: 'basic', 29 state: '段光伟', 30 display: 'page' 31 }; 32 33 window.open(url + '?' + Ext.urlEncode(params), '_blank', "width=800,height=600"); 34 35 e.stopEvent(); 36 }); 37 </script>
后台代码
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.IO; 8 using System.Net; 9 using Newtonsoft.Json; 10 11 namespace OAuthoStudy 12 { 13 public partial class Index : System.Web.UI.Page 14 { 15 protected void Button1_Click(object sender, EventArgs e) 16 { 17 var access_token = this.GetAccessToken(); 18 WebRequest request = WebRequest.Create("https://openapi.baidu.com/rest/2.0/passport/users/getInfo?access_token=" + access_token); 19 20 var response = request.GetResponse(); 21 StreamReader sr = new StreamReader(response.GetResponseStream()); 22 dynamic data = JsonConvert.DeserializeObject(sr.ReadToEnd()); 23 24 this.Response.Write("欢迎您:" + data.username); 25 } 26 27 private string GetAccessToken() 28 { 29 WebRequest request = WebRequest.Create("https://openapi.baidu.com/oauth/2.0/token?client_id=hdFhQoUiu9GdeqBzPStXf9li&client_secret=NLzxHLzbWn2XGZrQbsfuG3lBYX5tcBHZ&grant_type=authorization_code&code=" + this.TextBox1.Text + "&redirect_uri=oob"); 30 31 var response = request.GetResponse(); 32 StreamReader sr = new StreamReader(response.GetResponseStream()); 33 dynamic data = JsonConvert.DeserializeObject(sr.ReadToEnd()); 34 35 return data.access_token.ToString(); 36 } 37 } 38 }
运行效果
备注
OAuth的主要作用应该是授权,具体还要继续思考。