QQ登录
来源:互联网 发布:淘宝网商家中心 编辑:程序博客网 时间:2024/04/30 03:28
这是我的页面结构,其中login.aspx页面上有QQ登录按钮,然后引用官方的js,还有根据api写的获取登录后用户信息的js.login.aspx登录页截图。
引用官方js,然后设置一个登录后需要返回的路径data-redirecturi,下面引用的QQLogin.js里面主要写了判断是否登录成功,以及获取信息。代码在下面。
function QQLoginTrue() { var openid; //登录成功获取openid, var accesstoken; //获取accessToken var qqsex; var qqnickname; //获取当前登录用户的Access Token以及OpenID if (QC.Login.check()) {//如果已登录 QC.Login.getMe(function (openId, accessToken) { //从页面收集OpenAPI必要的参数。get_user_info不需要输入参数,因此paras中没有参数 var paras = {}; //用JS SDK调用OpenAPI QC.api("get_user_info", paras).success(function (s) {//指定接口访问成功的接收函数,s为成功返回Response对象 //成功回调,通过s.data获取OpenAPI的返回数据 //alert("获取用户信息成功!当前用户昵称为:" + s.data.nickname + "当前用户头像地址:" + s.data.figureurl + "性别:" + s.data.gender + ""); //qqnickname = s.data.nickname; //qqsex = s.data.gender; }).error(function (f) {//指定接口访问失败的接收函数,f为失败返回Response对象 //失败回调 alert("获取用户信息失败!"); }).complete(function (c) {//指定接口完成请求后的接收函数,c为完成请求返回Response对象 //完成请求回调 qqnickname = c.data.nickname; qqsex = c.data.gender; //alert("openId:用户身份的唯一标识。建议保存在本地,以便用户下次登录时可对应到其之前的身份信息,不需要重新授权。值为:" + openId + " accessToken:表示当前用户在此网站/应用的登录状态与授权信息,建议保存在本地。值为:" + accessToken); openid = openId; accesstoken = accessToken; //这里可以调用自己的保存接口 //alert("openid:"+openid +"accesstoken"+ accesstoken +"昵称:"+ qqnickname +"性别:"+ qqsex); //判断当前登录的QQ用户是否已经绑定,已经绑定则直接跳转至个人中心,未绑定则保存记录 $.ajax({ type: "POST", url: "CheckQQ.ashx", data: { "Command": "QQSave", "openId": openid, "accessToken": accesstoken, "QQNickName": qqnickname, "QQSex": qqsex }, error: function (data) { alert("" + data + "") }, success: function (data) { if (data == "Bound") { location.href = "/Home/Default.aspx"; } else if (data == "UserNOFail") {//账号异常,未查询到 alert("没有与此QQ绑定的账号!"); location.href = "/home/Register.aspx"; } else if (data == "ParmNull") {//QQ登录参数有空值 alert("请重新登录QQ"); QC.Login.signOut(); location.reload(); } else if (data == "saveSuccess"|| data=="WaitBind") {//等待绑定 location.href = "/home/QQBind.aspx"; } }, async: true, dataType: "text" }); }); }); } } //调用QC.Login方法,指定btnId参数将按钮绑定在容器节点中 QC.Login({ //btnId:插入按钮的节点id,必选 btnId: "qqlogin", //用户需要确认的scope授权项,可选,默认all scope: "all", //按钮尺寸,可用值[A_XL| A_L| A_M| A_S| B_M| B_S| C_S],可选,默认B_S size: "B_M" },function (reqData, opts) {//登录成功 //根据返回数据,更换按钮显示状态方法 QQLoginTrue(); var dom = document.getElementById(opts['btnId']), _logoutTemplate = [ //头像 '<span><img src="{figureurl}" class="{size_key}"/></span>', //昵称 '<span>{nickname}</span> | ', //退出 '<span style="cursor:pointer" onclick="javascript:QC.Login.signOut();">退出</span>' ].join(""); dom && (dom.innerHTML = QC.String.format(_logoutTemplate, {nickname: QC.String.escHTML(reqData.nickname), //做xss过滤 figureurl: reqData.figureurl })); },function (opts) {//注销成功 location.reload(); } );
登录返回页 QQLoginBack.aspx
QQLoginBack.aspx页面是登录返回页,这个页面上引用上官方js,其中data-callback属性设为true,会关闭模拟窗口,然后返回原始页。
这样选择用户登录后,模拟窗口后关闭,然后返回Login.aspx页面,此时login.aspx页面上的js会判断是否已经登录,登录成功后会执行你要的操作。
我上面的js里判断登录成功后获取用户信息,会去查询是否与此网站绑定过,如果没有绑定过,会跳转另外一个页面去绑定QQ,如果绑定过,就会直接登录成功,然后转入个人中心。
欢迎加群交流
- QQ登录
- QQ登录
- qq登录
- QQ登录
- QQ登录
- QQ登录
- QQ登录
- QQ登录
- QQ登录
- QQ登录
- QQ登录
- QQ登录
- QQ登录
- qq登录
- qq登录
- QQ快捷登录(sdk登录)
- QQ游戏登录效果
- QQ登录界面
- PHP操作MongoDB
- XCODE 4.5 IOS多语言设置 及NSLocalizedString和NSLocalizedStringFromTable的用法。
- AutoMapper使用笔记
- 南阳理工OJ_另一种阶乘问题
- msxml
- QQ登录
- ContentShell启动过程全分析(一)
- Softirqs , tasklets, reentrant.
- hdu 3416(最短路+最大流)
- windows下打包QT5.1程序
- expect
- Android Studio 添加C库so文件方法(NDK开发)
- 移植apache2 ARM版 - 交叉编译apr-1.4.8
- sqoop export SQLSERVER 存储过程参数限制