网站接入QQ登录
在网站接入QQ登录时遇到很多麻烦,主要是QQ互联和腾讯开放平台的关系比较乱,不知道要从哪个接入。
最终解决方式:在腾讯开放平台注册个人开发者,验证通过后,在QQ互联平台会有腾讯开放平台的注册信息,然后依次点击 个人中心-》编辑-》提交审核 审核完毕后应该就可以通过分配的ID信息接入了。
(在最初QQ互联注册时,个人开发者总是需要提交营业执照,现在换了个qq号注册不需要了,可能是第一次QQ互联注册时JS没切过来的原因吧,应该是可以直接在QQ互联注册个人开发者的,不需要我这样绕路,(-。-;))
通过了解QQ互联和腾讯开放平台的区别应该是这个:QQ互联主要是为了给第三方网站或移动应用提供登录信息。而腾讯开发平台,则是为托管型的应用(平台应用和移动应用)提供服务的。不过现在QQ互联正在往腾讯开发平台上迁移。
下面是网上看到的比较不错的入门教程:(原文:http://blog.csdn.net/xiaoxian8023)
主要分两部分:
-
1.注册QQ互联开发者
2.接入QQ登录方法和接口使用方法
现在这种第三方登录的应用很广泛也很方便。省得用户进行注册了。今天就来研究一下QQ登录API的使用。
首先说一下,腾讯提供了许多个的开放平台。差不多每个大的产品都提供了开放平台,比如微信、QQ邮箱,财付通等。这里面有2个比较易混的,一个是QQ互联,一个是腾讯开发平台。QQ互联主要是为了给第三方网站或移动应用提供登录信息。而腾讯开发平台,则是为托管型的应用(平台应用和移动应用)提供服务的。不过现在QQ互联正在往腾讯开发平台上迁移。
这是QQ互联官网中关于网站接入流程的wiki:http://wiki.connect.qq.com/%E7%BD%91%E7%AB%99%E6%8E%A5%E5%85%A5%E6%B5%81%E7%A8%8B
第一步,注册成为开发者。
首先你得成为QQ互联的开发者,你才可以享用它的服务。进入 http://connect.qq.com/ ,选择“网站接入”:
会让你选择一个QQ登录,这个QQ就成为了开发者QQ号码了,而且不能更换。所以如果你是为公司做这个事儿,还是使用公司的公共QQ吧。
QQ登进去以后,会跳转到开发者注册页面。注册页面需要提交公司或个人的基本资料。下图所示的是公司和个人的注册页面:
第二步,网站接入申请。
QQ登录有必要的验证工作要做,首先提交申请,获取appid与appkey,这两个是一切操作的基础。所以必须先申请。
我这里以个人开发为例,开发者注册成功以后,会跳转到“管理中心”页面。点击“添加应用”,然后选择网站:
在弹出的对话框里,填写相应的信息:
网站地址输入框先填写你的网站首页,然后把鼠标移动到“验证”按钮上面,按照提示修改你的首页源码。修改完毕,点击“开始验证”,如果成功了,会提示“已通过验证”。
回调地址,就是登录QQ之后,QQ给你返回值的接收页面,这个页面可以是一个单独的页面,也可以和登录页面是一个。注意:回调地址不含http://等协议头。如果你有多个站点公用一个APPID,那么请点击回调地址下面的“帮助文档”查看,飞机票。
网站注册完成,进入管理中心,在管理中心可以查看到网站获取的appid和appkey,如下图所示:
如果你想修改网站信息,可以在管理中心,点击申请的网站下的“编辑信息”进行修改。
申请完毕以后,接下来就是网站接入了。
其实我主要是用到了这里的QQ登录授权。如何处理呢?我们下篇继续。
为了让网站更快接入,腾讯提供了JS SDK的接入方案,具体点击这里或者点击这里进行查看。
1.授权:获取授权码Authorization Code
说明:第一步QQ必须得到要登录系统的授权信息,如果授权全成功,则会跳转到回调地址,同时授权码以参数形式,追加回调地址上。
当然还有一些其他参数,具体详情看官方介绍。
返回:
2. 登录:通过Authorization Code获取Access Token
说明:获取网址中的code值,这个就是Authorization Code,通过它,可以获取访问令牌。这个访问令牌,事实上是给登录系统用的,主要是允许访问QQ的授权服务。(注意:不要向别人泄漏Access Token,因为它有3个月时效)
详细请看官方介绍
实例:
返回:
3. 获取用户openid
说明:先说一下openid,它是此网站上或应用中唯一对应用户身份的标识,与QQ号一一对应。网站或应用可将此ID进行存储,便于用户下次登录时辨识其身份,或将其与用户在网站上或应用中的原有账号进行绑定。有了它以后就可以确定当前登录的QQ,获取到QQ登录用户的基本信息了。(注意:不要向别人泄漏OpenID)
实例:
返回:
4. 调用OpenAPI获取各种信息
点击API列表。里面有每个API的使用说明。当然前提是你的应用或网站有这个api的授权信息才可以。点击“应用管理”中的“API管理”,可以看到所有已授权和未授权的API。
作为演示,我这里选择的是获取用户信息api:get_user_info
实例:
返回