想必第一次大家接触QQ第三方登陆都会遇到各种各样的问题,备受折磨,因此,今天我把自己做QQ登陆的过程描述一下,希望给大家提供参考,少走弯路。

在开发之前,我们先了解下QQ登陆的流程

第一:查看熟悉 网站接入概述

第二:开发者注册  网站接入流程

第三:前两步熟悉以后,获取到appid后,即可进行开发了。

本次只介绍PC网站接入QQ过程

  1. 登陆页面放置QQ登陆按钮

    <span id="qqLoginBtn" ></span>

    id可自定义修改,如果样式不对,也可以自定义class,做一些样式控制。

  2. 在登陆页面引用QQ登陆js库。
    <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="XXXX" data-redirecturi="http://www.51purse.com/qq_back.html" charset="utf-8" ></script>

    data-appid对应的XXXX需要替换为你自己的appid,上面您完成开发者注册后,即可获取到appid。
    data-redirecturi为回调地址,后面对应的值是我目前网站的回调页面,大家也可以自己写一个页面。

  3. 新建空白页面(回调页面)
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>我爱管账网</title>
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="keywords" content="我爱钱包,钱包管家,我爱记账,我爱管账" />
    <meta http-equiv="description" content="我爱管账网是一种给主要给用户提供记账理财的工具,帮助用户更好更合理的管理自己的资金,帮助用户分析和控制预算" />
    <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-callback="true" charset="utf-8" ></script>
    </head> <body>
    </body>
    </html>

    大家一定要切记:此处必须是空白页面,就是什么内容都不放,值建一个空的HTML文件,引入sdk文件即可,大家完全可复制我的。

  4. 登陆页面初始化相关参数,初始化QQ图标,自定义尺寸,传入id。
    if($("#qqLoginBtn").size()>0){
    QC.Login({
    btnId : "qqLoginBtn",//插入按钮的html标签id
    size : "A_M",//按钮尺寸
    scope : "get_user_info",//展示授权,全部可用授权可填 all
    display : "pc"//应用场景,可选
    },function(reqData, opts){
    document.cookie="flag=2";
    window.location.href="welcome.html";
    });
    }

    此处代码,引入到登陆页面中,初始化的时候,就会加载QQ图片到按钮上去。function(reqData,opts){}方法,即为登陆成功后的回调,登陆成功以后,我这边会手动让他回到主页面,因为我是JS开发者,做的是单页面应用,所以只能自己手动回到主页面,当然,大家其它语言的,可以直接通过action跳转到主页面。

  5. 在主页面(welcome.html)同样需要引用sdk文件库,如果QQ按钮和主页面在同一个页面的话,只需要引入一次即可,比如某些论坛。
    <script type="text/javascript" src="http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid="XXXX" data-redirecturi="http://www.51purse.com/qq_back.html" charset="utf-8" ></script>

    此处代码,同登陆页面一样,大家直接复制过去即可。

  6. 登陆成功后,大家需要调用QQ的API来获取用户的资料信息,方便在自己网站上展示,同时可将相关字段存入自己的数据库,以维护用户的数据。
    //判断当前用户是否登陆
    if(QC.Login.check()){//如果已登录
    //用JS SDK调用OpenAPI,此处可获得openId, accessToken
    QC.Login.getMe(function(openId, accessToken){
    //调用get_user_info接口,可得到用户的资料信息,此处不需要传入任何参数,因为QQapi会自动带入参数
    QC.api("get_user_info",{}).success(function(rep){
    var nickName = rep.data.nickname;
    var gender = rep.data.gender;
    var figureurl = rep.data.figureurl;
    $("#currentUserNickName").text(rep.data.nickname);
    });
    });
    }else{
    document.cookie="flag=1;expires="+new Date(0).toUTCString();
    window.location.href="login.html";
    }

    此代码可以获取用户资料信息,同时也可以获取到openId和accessToken。

  7. 到此基本QQ第三方登陆就结束了,另外一个非常重要的地方是,在您个人的管理中心中,申请appid的地方,需要将回调地址,改成和上面建的空白页面的地址一样即为:
    http://www.51purse.com/qq_back.html,切记,必须这么写,否则,登陆会报错(redirect uri is illegal(100010)),这一点我深有体会,官网的Demo是有问题的,我查阅了很多资料都无法解决,我总以后是登陆成功后的页面,所以,我之前填的是主页面,可是怎么弄都不想,必须是之前建的空白页面。
  8. 以上7条基本可以实现完整的QQ登陆了。下面给大家补充一下get_user_info接口的返回数据,大家其实也可以去查看API文档,我这边稍微提一下。
    get_user_info接口
    
    ret    返回码
    msg 如果ret<0,会有相应的错误信息提示,返回数据全部用UTF-8编码。
    nickname 用户在QQ空间的昵称。
    figureurl 大小为30×30像素的QQ空间头像URL。
    figureurl_1 大小为50×50像素的QQ空间头像URL。
    figureurl_2 大小为100×100像素的QQ空间头像URL。
    figureurl_qq_1 大小为40×40像素的QQ头像URL。
    figureurl_qq_2 大小为100×100像素的QQ头像URL。需要注意,不是所有的用户都拥有QQ的100x100的头像,但40x40像素则是一定会有。
    gender 性别。 如果获取不到则默认返回"男"
    is_yellow_vip 标识用户是否为黄钻用户(0:不是;1:是)。
    vip 标识用户是否为黄钻用户(0:不是;1:是)
    yellow_vip_level 黄钻等级
    level 黄钻等级
    is_yellow_year_vip 标识是否为年费黄钻用户(0:不是; 1:是) { "ret":0, "msg":"", "nickname":"Peter", "figureurl":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/30", "figureurl_1":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/50", "figureurl_2":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/100", "figureurl_qq_1":"http://q.qlogo.cn/qqapp/100312990/DE1931D5330620DBD07FB4A5422917B6/40", "figureurl_qq_2":"http://q.qlogo.cn/qqapp/100312990/DE1931D5330620DBD07FB4A5422917B6/100", "gender":"男", "is_yellow_vip":"1", "vip":"1", "yellow_vip_level":"7", "level":"7", "is_yellow_year_vip":"1" }

    。。

  9. 最好给大家提供几个地址:
    sdk下载地址
    api文档列表地址
  10. 给大家看下我的登陆效果

    这是登陆页面渲染出来的QQ登陆图标。

    这是点击QQ登陆后,跳转第三方QQ登陆窗口页面。

    这是登陆成功后的主页面。

    这是我再申请QQ登陆时的管理中心页面,填写自己的回调地址,此处非常重要,填错,就无法进行跳转。

QQ互联第三方登陆 redirect uri is illegal(100010)的更多相关文章

  1. QQ互联登录提示redirect uri is illegal(100010)完美解决方法

    大概2015年3月低,腾讯QQ互联开发平台调整了有关QQ登录应用回调地址填写规则,用来修复QQ登录过程因回调地址的漏洞可能导致存在的安全问题. 博主接触这块较多,但也是四月才了解此事,从4月起,所有新 ...

  2. QQ互联登录回调路径错误redirect uri is illegal(100010)

    QQ互联登录设置的路径设置

  3. Discuz3.1登录QQ互联显示redirect uri is illegal(100010)的解决

    QQ互联最近也是BUG不断,引起了很多用户的不满,从早前关闭群组功能,到发布2.0接口标准,引发系列站长用户的连锁反应.而Discuz从X3开始,为了应对QQ互联的2.0接口标准,采用了云平台来整合Q ...

  4. 解决qq互联回调地址错误redirect uri is illegal(100010)的方法,不同于网上大部分方法

    我是在用ecshop自己搭建的一个网店系统安装了第三方登录的插件,包括qq登录插件.网上大部分情况都是discuz论坛的这个回调地址出错及解决办法.所以在我出错的时候参考他们的办法并不管用.但是在后面 ...

  5. QQ互联 redirect uri is illegal(100010)的解决办法,很简单

    我的地址栏内容是:http://openapi.qzone.qq.com/oauth/show?which=ConfirmPage&display=pc&response_type=c ...

  6. QQ互联API接口失效,第三方网站的死穴

    最近2个月,用开源程序WeCenter搭建了一个社交问答网站. 为了方便用户注册,开通了QQ登录功能. 今天,突然发现QQ互联返回一直出现错误.     度娘了很久,发现大家都遇到这个问题了.Disc ...

  7. QQ互联,填写回调时注意事项

    今天在做QQ登录接口的时候,填写回调地址的时候,竟然出现了诡异的事情. 我的回调地址我直接填的域名,也申请通过了.但是在做开发地时候,一直提示这蛋疼的  redirect uri is illegal ...

  8. 第三方登陆-qq互联

    看到很多网站都有第三方登陆,使用业余时间自己也要实现一个第三方登陆的功能: 1.登陆qq互联的网站:https://connect.qq.com/index.html 2.点击头像进行资料申请 --- ...

  9. QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码(转)

    OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容. QQ登录OAuth2 ...

随机推荐

  1. 利用Register protocol实现网页调用桌面程序(类似迅雷、QQ等)

    前言 我们经常看到 tencent://.. thunder://     这两种开头的网址,往往觉得很奇怪,很想弄懂其中的原理,是如何实现的,我查找了相关的 资料,终于找到了,跟大家分享下. 原理篇 ...

  2. python全栈开发第10天-正则表达式

    正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式 ...

  3. Http相关

    1.http请求 http请求分为三部分:请求行,请求头,请求正文 1. 请求行 请求方式  GET   POST 请求资源路径 协议版本 GET与POST请求区别? get只能传递1kb以下数据,P ...

  4. ASP.NET Core:CMD命令行+记事本 创建Console程序和Web Application

    今天看了Scott关于ASP.NET Core的介绍视频,发现用命令行一步一步新建项目.添加Package.Restore.Build.Run 执行的实现方式,更让容易让我们了解.NET Core的运 ...

  5. java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  6. Realm数据库的简单介绍和使用

    给大家介绍一个数据库操作的框架Realm,本文主要以iOS 平台的使用场景为例. realm是一个跨平台移动数据库引擎,支持iOS.OS X(Objective-C和Swift)以及Android: ...

  7. xml转义符

    今天在看项目的UrlRewriteFilter(动态url静态化,有利于搜索引擎搜索)的配置文件urlrewrite.xml时,看到了“&”字符,查询之后才知道xml文件中的转义比html中的 ...

  8. Xamarin android 的WebClient Json下载并存储本地及sqlite数据库

    这一点雕虫小技可能对熟悉的人来说已经不值一提.但是我想,既然这些都是常用的功能,集成在一起做个笔记也有点意义吧. 首先,json 是传递数据的事实标准了.所以先说一下将它从服务器端下载下来..net ...

  9. ElasticSearch查询 第五篇:布尔查询

    布尔查询是最常用的组合查询,不仅将多个查询条件组合在一起,并且将查询的结果和结果的评分组合在一起.当查询条件是多个表达式的组合时,布尔查询非常有用,实际上,布尔查询把多个子查询组合(combine)成 ...

  10. llinux svn安装

    1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) [plain] view plain copy print? sudo apt-get  ...