paip.网站接入QQ登录总结
paip.网站接入QQ登录总结
作者Attilax , 1466519819@qq.com
1.建立图片按钮连接
————--------------
我的是这样的。
<a href="/qqlogin/" target="_blank"><img src="http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/img/Connect_logo_7.png"
alt="qqloginImg" border="0"></a>
2.下载.NET SDK从官网上,并加入项目引用
--------------------------------
Connect_.NET_SDK_for_OAuth2_V1.1
QConnectSDK.dll
RestSharp.dll
Newtonsoft.Json.dll
3.配置WEB.CONFIG,加入你的APPID和KEY
------------------------------------------------
3.a根结点<configuration>,加入以下配置
--------------
<configSections>
<!--qqlogin cfg1/3-->
<sectionGroup name="QQSectionGroup">
<section name="QzoneSection" type="System.Configuration.NameValueSectionHandler,System,
Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" />
</sectionGroup>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,
EntityFramework, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!--//qqlogin cfg1/3 end-->
</configSections>
................................................
3.b配置<QQSectionGroup>
---------------------------------------
<!-- qqlogin cifg start-->
<QQSectionGroup>
<QzoneSection>
<add key="AppKey" value="100310245" />
<!--这里这填上你在http://connect.qq.com/manage/注册后获得的APP ID-->
<add key="AppSecret" value="cf7c7516d074164f175fb64225c1938e" />
<!--这里填上注册后的APP KEY-->
<add key="CallBackURI" value="http://www.zuketang.com/qqlogin/calback.aspx" />
<!--注册时写的回调地址-->
<add key="AuthorizeURL" value="https://graph.qq.com/oauth2.0/authorize" />
</QzoneSection>
</QQSectionGroup>
3.c配置<appSettings>,这里好向不配置也可以了用。
-----------------
<appSettings>
<!--qqlogcfg c-->
<!--<add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled"
value="true" /> <add key="DaoType" value="Codingwell.DevText.SQLDAL" />-->
<add key="appKey" value="100310245" />
<!--这里如上面一样-->
<add key="appSecret" value="cf7c7516d074164f175fb64225c1938e" />
<add key="callbackUrl" value="http://www.zuketang.com/qqreturn.htm" />
<add key="SmtpHost" value="smtp.gmail.com" />
<add key="SmtpUser" value="" />
<add key="SmtpPassword" value="" />
<add key="EnableSsl" value="true" />
<add key="SslPort" value="587" />
<!--end qqlogcfg c-->
</appSettings>
4.发起请求/qqlogin/default.aspx
-----------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
//
//TODO: 在此处添加 逻辑
//
GetRequestToken();
}
private void GetRequestToken()
{
QzoneContext context = new QzoneContext();
string state = Guid.NewGuid().ToString().Replace("-", "");
string scope =
"get_user_info,add_share,list_album,upload_pic,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,ge
t_fanslist,get_idolist,add_idol,del_idol,add_one_blog,add_topic,get_tenpay_addr";
string authenticationUrl = context.GetAuthorizationUrl(state, scope);
//request token, request token secret 需要保存起来
//在demo演示中,直接保存在全局变量中.真实情况需要网站自己处理
Application["requeststate"] = state;
Response.Redirect(authenticationUrl);
}
5.接收OPENID并保存实现登录/qqlogin/calback.aspx
------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params["code"] != null)
{
QOpenClient qzone = null;
User currentUser = null;
string verifier = Request.Params["code"];
string state = Application["requeststate"].ToString();
qzone = new QOpenClient(verifier, state);
currentUser = qzone.GetCurrentUser();
if (null != currentUser)
{
this.Label1.Text = "成功登陆";
this.Label2.Text = currentUser.Nickname;
this.Image1.ImageUrl = currentUser.Figureurl;
}
Session["QzoneOauth"] = qzone;
//set login token
string loginuname = qzone.OAuthToken.OpenId;
IloginController lc = god.getloginController();
lc.setLoginToken(loginuname);
IqqInfoController qic = god.getqnfoController();
qqinfo qi = new qqinfo();
qi.openid = loginuname;
qi.user = currentUser;
qic.save(qi);
Response.Redirect("/");
}
}
6.设置网站类型为.NET 4.0 支持
--------------------------------
因为此QQ SDK是.NET4.0开发的,需要.NET4.0环境。
IIS,网站》应用程序池。ASP.NET v4.0 Classic
IIS管理器》连接---根结点机器>IIS> ISAPI 和 CGI 限制>打开ASP.NET4.0 的扩展限制。。一个是FRAMWORK64位的不用管,只打开
FRAMWORK32版本的。。
参考
--------------
网站使用QQ登陆 - 追夢 - 博客园.htm
OAuth 、Xauth 和OAuth2.0有什么区别 [复制链接]