• 网站使用QQ登陆


    上几天我朋友说他知道怎么实现网站使用QQ号登陆或者注册了,于是要他发给我学习,感觉好复杂,而且运行不了(主要万原因是因为这东西得上传到空间是实验),于是在博客园找了相关的资料,发现在也并不是很复杂的,比他的简单多了。

    首先请到这里下载最新版本的SDK:http://opensns.codeplex.com/

    SDK依赖于Newtonsoft.Json和RestSharp两个程序集,具体可以参考使用RestSharp 库消费Restful Service。 主要是两个类QzoneContext(QQ登陆的上下文数据)  和 QOpenClient (QQ互联API入口),其他类主要是模型,配置类。

    我这里新建的项目是在.net framwork 4.0,请你转换成 .net framwork 4.0,否则可能会出错,运行不了

    1、你得去http://connect.qq.com/ 申请一个账号,会得到一个APP ID和App Key,这两个东东会在生成请求的时候用到。你的去填一些资料,还要提交一些资料审核。

    在配置文件web.config加入QQ登陆所需要的一些配置参数,下面的代码请加到如下图选中的地方

    <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"/>
    </configSections>
    <QQSectionGroup>
    <QzoneSection>
    <add key="AppKey" value="*******"/><!--这里这填上你在http://connect.qq.com/manage/注册后获得的APP ID-->
    <add key="AppSecret" value="*****************"/><!--这里填上注册后的APP KEY-->
    <add key="CallBackURI" value="http://www.xxxx.cn"/><!--注册时写的回调地址-->
    <add key="AuthorizeURL" value="https://graph.qq.com/oauth2.0/authorize"/>
    </QzoneSection>
    </QQSectionGroup>
    <appSettings>
    <!--<add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="DaoType" value="Codingwell.DevText.SQLDAL" />-->
    <add key="appKey" value="*************"/><!--这里如上面一样-->
    <add key="appSecret" value="*******************"/>
    <add key="callbackUrl" value="http://www.xxxxxxxxx.cn"/>
    <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"/>
    </appSettings>

    AppKey是申请QQ登录成功后,分配给应用的appid;AppSecret是申请QQ登录成功后,分配给网站的appkey;CallBackURI是QQ登陆成功后的回调地址(回調地址就是你在申請QQ時如下圖中的填寫的回調地址);AuthorizeURL是QQ互联的OAth2认证地址。

    (此圖是因為向前一步是幸福發消息給我說:“CallBackURI这个回调网址所指的是什么啊”,所以特加上圖解釋,如其他朋友也有什麼不懂的,請給我留言,或者加上面的QQ群問我!)

    在项目中添加上面下载的SDK文件夹中三个引用Newtonsoft.Json.dll、RestSharp.dll和 QConnectSDK.dll, 在页面上放置按钮,打开qq登录的页面,然后登录成功之后回调您的网站的页面。此时如果用户在你的网站有账号,那就可以绑定现有账号,或者新注册一个账号。如果你是新建站,也可以完全使用qq登录来作为用户体系。

     登陆页面:

    using QConnectSDK.Context;//请加入这个命名空间

    public partial class LoginToQQ : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    GetRequestToken();
    }

    private void GetRequestToken()
    {
    var 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,get_fanslist,get_idolist,add_idol,del_idol,add_one_blog,add_topic,get_tenpay_addr";
    var authenticationUrl = context.GetAuthorizationUrl(state, scope);
    //request token, request token secret 需要保存起来
    //在demo演示中,直接保存在全局变量中.真实情况需要网站自己处理
    Session["requeststate"] = state;
    Response.Redirect(authenticationUrl);

    }


    }

    回调页面:

    View Code
    using QConnectSDK;//请加入这个命名空间
    using QConnectSDK.Models;
    public partial class QQCallback : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (Request.Params["code"] != null)
    {
    QOpenClient qzone = null;
    User currentUser = null;

    var verifier = Request.Params["code"];
    string state = Session["requeststate"].ToString();
    qzone = new QOpenClient(verifier, state);
    currentUser = qzone.GetCurrentUser();
    if (null != currentUser)
    {
    this.result.Text = "成功登陆";
    this.Nickname.Text = currentUser.Nickname;
    this.Figureurl.ImageUrl = currentUser.Figureurl;
    }
    Session["QzoneOauth"] = qzone;
    }
    }
    }
    本地测试
    • 前提准备,了解本地Host文件的作用
    1. 找到C:\WINDOWS\system32\drivers\etc\hosts这个文件
    2. 用文本方式打开
    3. 增加一行:127.0.0.1 www.****.com 你注册时写的网址,不是回调地址(不过也许你的回调地址和你的网址一样,也是可以的)这就是所谓的域名劫持,嘿嘿!
    4. 启动本地服务器
    5. 启动浏览器访问 http://www.****.com/

    参考博文:http://www.cnblogs.com/shanyou/archive/2012/02/05/2338797.html

    http://www.devtext.com/blogs/detail/43/devtext-com-source-code 以及这个网站提供下载的网站源码。

    本示例Demo下载地址:https://files.cnblogs.com/koeltp/%E7%BD%91%E7%AB%99%E4%BD%BF%E7%94%A8QQ%E7%99%BB%E9%99%86.rar

    欢迎访问草根帮【https://www.caogenbang.top】 草根帮带你走向人生巅峰,迎娶白富美!!!
  • 相关阅读:
    PHP Context学习系列《十》
    学习php记录《九》
    学习php记录《八》
    php学习记录《七》
    换到新工作后
    学习php记录《六》
    学习php记录《五》
    学习php记录《四》
    学习php记录《三》
    html基础
  • 原文地址:https://www.cnblogs.com/koeltp/p/2427722.html
Copyright © 2020-2023  润新知