日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现Evernote的OAuth授权

發布時間:2024/6/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现Evernote的OAuth授权 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

原理圖

第三方OAuth庫

由于當中有一個簽名的字段,需要實現一些比較復雜的操作。所以使用了danielcrenna的OAuth的庫。下載地址https://github.com/danielcrenna/oauth

他里面的實例好像有點問題,好在庫本身是可以使用的。而且非常方便。

代碼

因為我是本地的程序所以我需要使用一個WebBrowser控件來完成認證授權的過程,另外也是因為是本地程序的原因我的回調地址就設置了一個localHost,這個回調地址必須有,不然會出現401錯誤,而且之后需要通過這個回調地址獲取Verifier.這個回調地址,不一定是要可以訪問的。

1: private String ConsumerKey = "xxxxxx"; 2: private String ConsumerSecret = "xxxxxxyyyyyyy"; 3: private String RequestURI = "https://sandbox.evernote.com/oauth"; 4: private String AuthorizationURI = "https://sandbox.evernote.com/OAuth.action"; 5: private String CallbackURI = "http://localhost/EvernoteAdage"; 6: private String RequestToken; 7: private String RequestTokenSecret; 8: private String Verifier; 9:? 10: private string Token; 11: private long Expires; 12:? 13: private void button2_Click(object sender, RoutedEventArgs e) 14: { 15: RequesCredentials(); 16: //使用webBrowser,導航到授權的網站 17: this.webBrowser1.Navigate(AuthorizationURI + "?oauth_token=" + 18: RequestToken); 19: } 20:? 21: //獲取RequestToken和RequestTokenSecret 22: private void RequesCredentials() 23: { 24: //CallbackUrl是一定要設置的 25: OAuthRequest client = OAuthRequest.ForRequestToken(ConsumerKey, 26: ConsumerSecret); 27: client.RequestUrl = RequestURI; 28: client.CallbackUrl = CallbackURI; 29:? 30: String auth = client.GetAuthorizationQuery(); 31: String url = client.RequestUrl + "?" + auth; 32: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 33:? 34: //獲取請求結果 35: HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 36: StreamReader reader = new StreamReader(response.GetResponseStream()); 37: String result = reader.ReadToEnd(); 38: reader.Close(); 39: response.Close(); 40:? 41: //從結果中提取出RequestToken和RequestTokenSecret 42: RequestToken = result.Split('&')[0].Split('=')[1]; 43: RequestTokenSecret = result.Split('&')[1].Split('=')[1]; 44: } 45:? 46: //針對授權的結果的Verifier 47: private void webBrowser1_Navigating(object sender, NavigatingCancelEventArgs e) 48: { 49: if(e.Uri.ToString().StartsWith("http://localhost/EvernoteAdage")) 50: { 51: var splitted = e.Uri.ToString().Split('&').Select(s => s.Split('=')).ToDictionary(s => s.First(), s => s.Last()); 52: if(!splitted.ContainsKey("oauth_verifier")) 53: { 54: return; 55: } 56: Verifier = splitted["oauth_verifier"]; 57: //獲取最終的Token 58: AccessCredentials(); 59:? 60: //顯示結果 61: this.textBlock.Text = 62: String.Format("Token = {0}\nExpires = {1}", 63: Token, Expires); 64: //進行退出處理 65: this.webBrowser1.Visibility = Visibility.Hidden; 66: } 67: } 68:? 69: //獲取訪問所需的Token Expires 70: private void AccessCredentials() 71: { 72: OAuthRequest Client = OAuthRequest.ForAccessToken(ConsumerKey, 73: ConsumerSecret, 74: RequestToken, 75: RequestTokenSecret, 76: Verifier); 77: Client.RequestUrl = RequestURI; 78:? 79: String auth = Client.GetAuthorizationQuery(); 80: String url = Client.RequestUrl + "?" + auth; 81: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 82:? 83: HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 84: StreamReader reader = new StreamReader(response.GetResponseStream()); 85: String result = reader.ReadToEnd(); 86: reader.Close(); 87: response.Close(); 88:? 89: var splitted = result.Split('&').Select(s => s.Split('=')).ToDictionary(s => s.First(), s => s.Last()); 90: String deToken = splitted["oauth_token"]; 91: String expiresStr = splitted["edam_expires"]; 92:? 93: Token = HttpUtility.UrlDecode(deToken); 94: Expires = Convert.ToInt64(expiresStr); 95: }

轉載于:https://www.cnblogs.com/atskyline/archive/2012/10/01/2709675.html

總結

以上是生活随笔為你收集整理的实现Evernote的OAuth授权的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。