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

  • 相关阅读:
    一天进步一点点
    Flask
    Sqlalchemy 设置表编码及引擎
    threading.local
    xshell配置密码公钥登录
    linux 系统优化+定时任务
    linux命令
    xshell连接及优化
    linux前奏
    Vue Devtools--vue调式工具
  • 原文地址:https://www.cnblogs.com/attilax/p/15199766.html
Copyright © 2020-2023  润新知