自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

騰訊開(kāi)放平臺(tái)中實(shí)現(xiàn)QQ登陸的功能

開(kāi)發(fā) 開(kāi)發(fā)工具
這昨天為自己的網(wǎng)站實(shí)現(xiàn)了QQ登陸的功能,雖然,沒(méi)有進(jìn)行綁定,但是在技術(shù)層面上來(lái)說(shuō),已經(jīng)了解了一點(diǎn)騰訊開(kāi)放平臺(tái)的協(xié)議。

這昨天為自己的網(wǎng)站實(shí)現(xiàn)了QQ登陸的功能,雖然,沒(méi)有進(jìn)行綁定,但是在技術(shù)層面上來(lái)說(shuō),已經(jīng)了解了一點(diǎn)騰訊開(kāi)放平臺(tái)的協(xié)議。

具體什么是OAUTH,請(qǐng)您GG一下吧...

 

關(guān)于騰訊的開(kāi)放平臺(tái),最主要的就是參數(shù)一定不能多,能有的要有,不能有的一定不能有.不然提交過(guò)去,就會(huì)提示什么什么錯(cuò)了。

最關(guān)鍵的就是簽名的方式,下面就是我的簽名的代碼:

  1. /// <summary>  
  2.          /// 每一步不同的生成簽名的方式  
  3.          /// </summary>  
  4.          /// <returns></returns>  
  5.          protected virtual String BuildSignature(String SignatureHost)  
  6.          {  
  7.              String PostMethodString = "GET&";  
  8.              StringBuilder ParamString = new StringBuilder();  
  9.              this.CurrentStepParameters  
  10.                  .OrderBy(c => c.Key.ToString())  
  11.                  .ToList()  
  12.                  .ForEach(c =>  
  13.                          {  
  14.                              if (c.Key != OAuthParameterName.oauth_signature &&  
  15.                                  c.Key != OAuthParameterName.timestamp)  
  16.                              {  
  17.                                  if (ParamString.Length > 0)  
  18.                                  {  
  19.                                      ParamString.Append("&");  
  20.                                  }  
  21.                                  var p = c.Value;  
  22.                                  ParamString.Append(p.OAuthOringinaName);  
  23.                                  ParamString.Append("=");  
  24.                                  ParamString.Append(p.Value);  
  25.                              }  
  26.                          }  
  27.                  );  
  28.              StringBuilder SignData = new StringBuilder();  
  29.              SignData.Append(PostMethodString);  
  30.              SignData.Append(OAuthHelper.UrlEncode(SignatureHost));  
  31.              SignData.Append("&");  
  32.              SignData.Append(OAuthHelper.UrlEncode(ParamString.ToString()));  
  33.    
  34.              //密鑰  
  35.              String SecretKey = String.Format("{0}&{1}"this.AppKey, this.AuthorizedTokenKey);  
  36.              String SignContent = SignData.ToString();  
  37.              String Signature = Convert.ToBase64String(OAuthHelper.HMACSHA1Code(SignContent, SecretKey));  
  38.              return Signature;  
  39.          } 

這里的CurrentStepParameters是在構(gòu)造方式里進(jìn)行賦值,或者其它地方,簽名里最關(guān)鍵的,就是oauth_signature和timestamp這兩個(gè)參數(shù),要記得去掉,在這里,我選擇了過(guò)濾。

因?yàn)橛械臅r(shí)候,CurrentStepParameters這個(gè)字典從querystring來(lái)生成的話會(huì)簡(jiǎn)單點(diǎn)還有能復(fù)用。

在所有參數(shù)中,有幾個(gè)是經(jīng)常會(huì)用到的。

所以,在此我建立了一個(gè)通用參數(shù)生成方法。

  1. protected virtual void AddCommonParameters()  
  2.          {  
  3.              if (this.CurrentStepParameters != null)  
  4.              {  
  5.                  //增加通用參數(shù)  
  6.                  this.CurrentStepParameters.AddParam(OAuthParameterName.oauth_consumer_key, this.AppID);  
  7.                  this.CurrentStepParameters.AddParam(OAuthParameterName.oauth_nonce, DateTime.UtcNow.Ticks.ToString());  
  8.                  this.CurrentStepParameters.AddParam(OAuthParameterName.oauth_timestamp, OAuthHelper.GenerateTimestamp());  
  9.                  this.CurrentStepParameters.AddParam(OAuthParameterName.oauth_version, "1.0");  
  10.                  this.CurrentStepParameters.AddParam(OAuthParameterName.oauth_signature_method, "HMAC-SHA1");  
  11.                  this.CurrentStepParameters.AddParam(OAuthParameterName.oauth_client_ip, "1");  
  12.    
  13.                  if (this.CurrentStepParameters.ContainsKey(OAuthParameterName.oauth_token_secret))  
  14.                  {  
  15.                      this.AuthorizedTokenKey = CurrentStepParameters[OAuthParameterName.oauth_token_secret].Value;  
  16.                  }  
  17.    
  18.                  if (this.CurrentStepParameters.ContainsKey(OAuthParameterName.oauth_signature))  
  19.                  {  
  20.                      CurrentStepParameters.Remove(OAuthParameterName.oauth_signature);  
  21.                  }  
  22.    
  23.                  if (this.CurrentStepParameters.ContainsKey(OAuthParameterName.timestamp))  
  24.                  {  
  25.                      CurrentStepParameters.Remove(OAuthParameterName.timestamp);  
  26.                  }  
  27.              }  
  28.          } 

下面是一個(gè)測(cè)試地址:http://www.changshu.so/Tencent ,之后等完成綁定后,地址會(huì)刪除。

組件下載地址:http://files.cnblogs.com/sam251/CSCMS.Secrity.OAuth.rar 

后續(xù)還有綁定的需要自己去實(shí)現(xiàn)了。如果能有通用的方式,我會(huì)定時(shí)更新,另外,其它OAUTH,比如SINA的,正在研究。

本程序里的OAuthHelper.GenerateTimestamp()及OAuthHelper.UrlEncode都是來(lái)自網(wǎng)上其它朋友的方法。

源不源碼也沒(méi)有什么重要了。因?yàn)檎显谧约旱木W(wǎng)站里,所以,只是給出了一個(gè)DLL,要源碼的可以找我,我可以發(fā)你。

原文鏈接:http://www.cnblogs.com/sam251/archive/2011/09/15/oauth_tencent.html

【編輯推薦】

  1. 騰訊微博開(kāi)放平臺(tái)正式推出LBS接口
  2. 國(guó)內(nèi)開(kāi)放平臺(tái)誰(shuí)將***個(gè)死去?
  3. 盛大開(kāi)放平臺(tái)案例:PHPCMS
  4. 淘寶開(kāi)放平臺(tái)案例:卷豆網(wǎng)
  5. 騰訊開(kāi)放平臺(tái)案例:游戲谷
責(zé)任編輯:林師授 來(lái)源: 小宇.net的博客
相關(guān)推薦

2013-01-04 17:44:59

2011-12-08 15:33:25

騰訊微博開(kāi)放平臺(tái)

2011-07-20 09:27:37

Scala

2009-02-20 14:54:33

SNS

2011-06-15 10:00:48

騰訊頁(yè)游《七雄爭(zhēng)霸》將

2014-11-28 15:41:29

.NET

2011-12-13 15:35:54

騰訊開(kāi)放平臺(tái)

2011-12-08 15:54:03

騰訊開(kāi)放平臺(tái)

2014-11-18 15:05:50

QQ

2011-12-13 15:45:39

2012-06-06 16:17:27

Windows 8 RQQ應(yīng)用

2010-08-18 08:21:49

Adobe AIRAndroid

2014-12-02 10:22:38

騰訊云微信開(kāi)放平臺(tái)云分析

2011-05-31 10:26:37

Android 對(duì)話框

2013-12-13 13:54:05

移動(dòng)應(yīng)用

2009-07-16 15:14:27

WebWork用戶(hù)登陸

2011-12-25 20:25:22

iPhone

2014-07-01 10:01:36

Go安卓開(kāi)發(fā)

2009-01-12 17:34:11

服務(wù)器虛擬化VMware

2015-03-16 11:24:01

阿里云騰訊云云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)