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有什么区别 [复制链接]

posted @ 2012-10-04 14:58  attilaxAti  阅读(30)  评论(0编辑  收藏  举报