第三方登录 腾讯QQ为例

来源:互联网 发布:175平台cs1.6数据查询 编辑:程序博客网 时间:2024/05/03 17:35

一、前几天弄第三方登录,刚上手的时候确实不知道做什么,然后就网上搜搜,原来基本上每个三方都有自己的开放平台和开发的SDK还有案例,具体的看案例就知道了

     关键的还是自己申请key我申请好多次都不能,别人说有窍门?我不知道,后来是用用户给的,具体的步骤如下

   

   1、申请开发平台的账户
   2、拿到自己的key和Secret
   3、拿着自己的key得到临时的
   4、在用临时的得到授权的
   5、通过授权的就可以拿到用户的信息了

   扣扣有自己的dll文件, QzoneSDK.dll也可以看腾讯的文档,里面有案例
   using QzoneSDK;
   using QzoneSDK.OAuth.Tokens;


腾讯社区开放平台OAuth2.0 SDK项目

OAuth2.0的SDK已经发布。推荐大家使用OAuth2.0的SDK。

SDK的使用环境?
开发环境:Visual Studio 2010
框架环境:.NET FRAMEWORK V2.0


怎么使用此SDK?
1、下载项目源码编译项目取得DLL库文件或已编译的DLL库文件,将DLL库文件引用到你的项目中。
2、取得你的腾讯社区开发平台的oauthconsumerkey (对应Qzone的appid)和oauthconsumersecret (对应Qzone的appkey),如果没有请自行前去腾讯社区开放平台申请。
3、根据oauthconsumerkey 与oauthconsumersecret实例化QzoneSDK.Context.QzoneContext和QzoneSDK.Qzone对象,并进入OAuth授权进程,最终取得Access Token值。
4、QzoneSDK.Qzone根据Access Token调用接口即可。

示例代码如下:

string key = ConfigurationManager.AppSettings["ConsumerKey"];//配置在web.config就是自己申请的key值

string secret = ConfigurationManager.AppSettings["ConsumerSecret"];/配置在web.config就是自己申请的Secret值

var context = new QzoneSDK.Context.QzoneContext(key, secret);

//Get a Request Token

var callbackUrl = ConfigurationManager.AppSettings["callbackUrl"]; //"/qzone/account/QQCallback.aspx";

var requestToken = context.GetRequestToken(callbackUrl);

//request token, request token secret 需要保存起来

//在demo演示中,直接保存在全局变量中.真实情况需要网站自己处理

Session["requesttokenkey"] = requestToken.TokenKey;

Session["requesttokensecret"] = requestToken.TokenSecret;

var authenticationUrl = context.GetAuthorizationUrl(requestToken, callbackUrl);

Response.Redirect(authenticationUrl);

用户在腾讯社区开放平台上授权使用后会导向到你的网站,也就是上图的第三步,在门上述的callback 的页面上就可以获取上图第四步的参数,利用上述获得的参数调用QzoneSDK.Qzone进行第五步调用,就可以获得AccessToken,这个AccessToken,目前access_token(及其secret)是长期有效的,和某一个openid对应,目前可以支持线下获取该openid的信息。

if (Request.QueryString["oauth_vericode"] != null)

{

var requestTokenKey = Session["requesttokenkey"].ToString();

var requestTokenSecret = Session["requesttokensecret"].ToString();

var verifier = Request.QueryString["oauth_vericode"];

string key = ConfigurationManager.AppSettings["ConsumerKey"];

string secret = ConfigurationManager.AppSettings["ConsumerSecret"];

QzoneSDK.Qzone qzone = new QzoneSDK.Qzone(key, secret, requestTokenKey, requestTokenSecret, verifier);

//这里需要将qzone.OAuthTokenKey, qzone.OAuthTokenSecret, qzone.OpenID 存储起来用于后面的API的访问

QzoneSDK.Qzone qzone2 = new QzoneSDK.Qzone(key, secret, qzone.OAuthTokenKey, qzone.OAuthTokenSecret, string.Empty, true, qzone.OpenID);

Session["qzonesdk"] = qzone2;

qzone2 = Session["qzonesdk"] as QzoneSDK.Qzone;

var currentUser = qzone2.GetCurrentUser();

var user = (BasicProfile)JsonConvert.Import(typeof(BasicProfile), currentUser);

if (null != user)

{

this.Nickname.Text = user.Nickname;

this.Figureurl.Text = user.Figureurl;

}

}

URL: http://qqconnect.codeplex.com

SVN: https://qqconnect.svn.codeplex.com/svn

Demo: http://www.dotnetting.cn/qzone/Account/Login.aspx

一个第三方登录弄明白,其他的网易,人人,新浪流程都是一样的,加油吧!少年...