腾讯QQ快捷


相关各语言对接qq快捷登录教程

[C#]QQ开放平台(QQ站外登录)_流程和源码示例

j2ee中实现QQ第三方登陆

web实现QQ第三方登录

asp.net网站接入QQ登录

php实现qq第三方登录

网站通过以下几个步骤,即可接入互联开放平台:
开发者注册 > 网站申请 > 网站开发 > 调用OpenAPI

目录

1. 开发者注册

1. 在QQ互联开放平台首页 http://connect.qq.com/ ,点击右上角的“登录”按钮,使用QQ账号登录,如下图所示:

重要提示: 
开发者QQ号码一旦注册不能变更,建议使用公司公共QQ号码而不是员工私人号码注册,以免遇到员工离职等情况造成不必要的麻烦。

 

2. 登录成功后会跳转到开发者注册页面,在注册页面需要提交公司或个人的基本资料。下图所示的是公司注册页面:

2. 网站接入申请

网站接入前,需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权。

2.1 添加网站

开发者注册成功后,会跳转到“管理中心”页面。点击添加网站,填写相应的信息,如下图所示:
 

网站信息填写完成,点击“确定”后,网站注册完成,进入管理中心,在管理中心可以查看到网站获取的appid和appkey,如下图所示:

2.2 网站信息完善

在管理中心,点击申请的网站下的“编辑信息”,进入编辑页面,点击右上角的“编辑”按钮,页面进入编辑状态,即可对网站信息进行修改和完善,如下图所示:

3. 网站开发

进入控制台页面,可以看到网站申请处于“开发”状态。网站上线,首先需对网站进行开发,即完成QQ登录功能并正常放置QQ登录按钮,如下图所示:

3.1 开发流程概述

开发流程主要包括如下几个步骤:

3.1.1 网站上设置QQ登录入口

网站主可以在自己的网站首页入口和主要的登录、注册页面上放置“QQ登录”标识(见红色方框标记处):

网站需要下载官方提供的“QQ登录”按钮图片,并按照UI规范将按钮放置在页面合适的位置。
按钮图标下载 按钮放置规范

3.1.2 用户登录验证和授权

1. 用户点击QQ登录按钮之后,弹出QQ登录窗口,在登录窗口中将显示网站自己的Logo标识,网站名称以及首页链接地址。
如果用户已登录QQ软件,也可以一键快速登录。
如下图所示:

2. 成功登录后,弹出授权框引导用户授权(仅在第一次成功登录,以及第一次访问某个未授权的OpenAPI时会出现授权页),如下图所示:
 

授权框中的授权列表由网站自行配置,详见scope参数说明。建议控制授权项的数量,只传入必要的接口名称,因为授权项越多,用户越可能拒绝进行任何授权。

具体实现详见:
开发攻略_Server-side的Step2和Step3 
开发攻略_Client-side的Step2

3.1.3 登录和授权完成后,跳转回网站

如果用户成功登录并授权,则跳转到指定的回调地址,该回调地址由第三方网站自行配置(在上一步的请求中传入),回调地址建议设置为网站首页或网站的用户中心。

3.1.4 获取并存储access token以及openid

成功登录后,即可发送请求来获取access token以及openid,这两个参数在调用OpenAPI访问和修改用户数据时必须传入,网站需自行绑定或存储:
(1)access token用来判断用户在本网站上的登录状态,具有3个月有效期,用户再次登录时自动刷新。
(2)openid是此网站上唯一对应用户身份的标识,网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有账号进行绑定。

3.1.5 在网站上显示用户登录昵称与QQ头像

建议网站调用get_user_info接口,在首页或顶部显示用户通过QQ帐号的登录状态,使用户体验一致,包括用户昵称、QQ头像,如下图所示:

详见:get_user_info

3.2 开发说明

QQ登录功能使用国际通用的OAuth2.0协议进行验证与授权,可通过以下两种方式进行网站开发:
(1)使用QQ互联提供的SDK包,用户体验统一,只需要修改少量代码,不需要理解验证授权流程,需要快速接入QQ登录的应用可选用此方法。
详见:SDK下载
JS SDK详见:JS SDK使用说明 
(2)根据QQ登录OAuth2.0协议,自主开发,此方法自定义程度较高,需要与现有系统进行整合的网站可选用此方法。
详见:OAuth2.0开发文档 
(3)社区类网站可以使用集成插件快速接入QQ登录。
详见集成插件

4. 使用QQ互联提供的OpenAPI

完成网站的开发后,即可在“管理中心”的“控制台”页面,点击“当前流程”下的“申请上线”,流程处于“审核”状态。
提交审核后,腾讯会在两个工作日完成审核,审核通过后,网站即正式上线。

网站上线后,可以使用QQ互联提供的丰富的API资源:
1. 我们提供了各种OpenAPI给开发者,网站可以调用这些API来实现需要的功能,使登录用户在网站上即可访问和修改QQ空间受保护的资源。
详见:API列表 API调用说明

2. 为方便网站快速使用这些API,QQ互联提供了JS-widget, JS-widget是JS封装的SDK,只需要在网站引入JS文件,就可以用封装好的方法访问对应的API,开发简单。 
详见:JS SDK使用说明

5. WAP网站接入

上述文档主要是针对WEB以及XHTML格式的网站。
WAP网站接入QQ登录可基于OAuth1.0协议和OAuth2.0协议。
基于OAuth1.0协议:接入过程详见开发攻略。该攻略对于一般网站和WAP网站接入都适用,每一步中WAP网站接入时需特别注意的地方特别用红色标注。
基于OAuth2.0协议:接入过程详见OAuth2.0开发文档。该文档对于一般网站和WAP网站接入都进行了说明。

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

QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。 
QQ登录OAuth2.0采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,相对于之前的OAuth1.0协议,其认证流程更简单和安全。具体参考文档 :【QQ登录】OAuth2.0开发文档

QQ互联网站已经提供了PHP,JS,Android和iOS的SDK,缺少.NET版本的SDK,春节假期期间利用一些空闲时间封装了一个具有完全功能的.NET SDK,后续将封装一个对应的Windows Phone的SDK,并开源放在http://opensns.codeplex.com ,专门搭建了一个示例网站http://www.win8charm.com/ 和MSDN风格的在线帮助网站http://help.win8charm.com/ 。今天这篇文章主要介绍使用.NET SDK实施QQ登陆功能。

从这里http://opensns.codeplex.com/ 下载最新版本的SDK,最新版本是Beta, 完成SDK的封装,希望大家使用帮忙测试,SDK依赖于Newtonsoft.Json和RestSharp两个程序集,具体可以参考使用RestSharp 库消费Restful Service。 主要是两个类QzoneContext(QQ登陆的上下文数据)  和 QOpenClient (QQ互联API入口),其他类主要是模型,配置类。

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

在配置文件web.config加入QQ登陆所需要的一些配置参数,如下图所示:

<configuration>
  <configSections>
    <sectionGroup name="QQSectionGroup">
      <section name="QzoneSection" type="System.Configuration.NameValueSectionHandler,System, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" />
    </sectionGroup>
  </configSections>
   <QQSectionGroup>
    <QzoneSection>
      <add key="AppKey" value="" />
      <add key="AppSecret" value="" />
      <add key="CallBackURI" value="" />
      <add key="AuthorizeURL" value="https://graph.qq.com/oauth2.0/authorize" />
    </QzoneSection>
  </QQSectionGroup>

AppKey是申请QQ登录成功后,分配给应用的appid;AppSecret是申请QQ登录成功后,分配给网站的appkey;CallBackURI是QQ登陆成功后的回调地址:AuthorizeURL是QQ互联的OAth2认证地址:

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

下面上代码:

/// <summary> 
        /// QQ登陆页面 
        /// </summary>

[HttpGet] 
       public ActionResult Login(string returnUrl) 
       { 
           this.Session[RETURNURL] = returnUrl; 
           var context = new QzoneContext(); 
           string state = Guid.NewGuid().ToString().Replace("-", ""); 
           Session["requeststate"] = state; 
           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); 
           return new RedirectResult(authenticationUrl);

}

/// <summary> 
        /// 回调页面 
        /// </summary>

public ActionResult QQConnect(LoginModel model) 
       { 
           if (Request.Params["code"] != null) 
           { 
               QOpenClient qzone = null;

var verifier = Request.Params["code"]; 
               var state = Request.Params["state"]; 
               string requestState = Session["requeststate"].ToString();

if (state == requestState) 
               { 
                   qzone = new QOpenClient(verifier, state); 
                   var currentUser = qzone.GetCurrentUser(); 
                   if (this.Session["QzoneOauth"] == null) 
                   { 
                       this.Session["QzoneOauth"] = qzone; 
                   } 
                   var friendlyName = currentUser.Nickname;

var isPersistentCookie = true; 
                   SetAuthCookie(qzone.OAuthToken.OpenId, isPersistentCookie, friendlyName);

return Redirect(Url.Action("Index", "Home")); 
               }


           return View(); 
       }

上面的代码是ASP.NET MVC的,项目示例运行在http://www.win8charm.com/ ,下面贴个ASP.NET WebForm的代码示例:

QQ登陆页面

namespace OpenConnect.WebSample.Account 

    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);


    } 
}

回调页面

namespace OpenConnect.WebSample.Account 

    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;

}

}

}

这里说明一下使用QQ互联登陆是获取不到用户的QQ号的,只会获取到用户的OpenId,OpenID和QQ号是一一对应关系。

本地测试
  • 前提准备,了解本地Host文件的作用
  1. 找到C:\WINDOWS\system32\drivers\etc\hosts这个文件 用文本方式打开 增加一行:127.0.0.1 www.domain.com 启动本地服务器 启动浏览器访问 http://www.domain.com/
其他

腾讯QQ登录接口(第三方登录接口申请流程)转载http://www.codesocang.com/jiaocheng/php/8122.html

腾讯QQ快捷登陆的更多相关文章

  1. 高仿腾讯QQ即时通讯IM项目

    前言:其实这个项目早就开发完成了,在本人的github上,本来没打算写成博客的形式,因为一个项目要写出来要花很久,但是最近看到很多 人在我的github上download后随意发布到网上,本来上传到g ...

  2. 如需在APP中使用腾讯QQ登陆,需提前申请获取腾讯QQ的APPKEY和APPSecret。

    如需在APP中使用腾讯QQ登陆,需提前申请获取腾讯QQ的APPKEY和APPSecret. 申请流程如下: 步骤1:登陆腾讯开放平台.链接地址: http://open.qq.com/ . 步骤2:填 ...

  3. QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件

    QQ 编辑 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件.腾讯QQ支持在线聊天.视频通话.点对点断点续传文件.共享文件.网络硬盘.自定义面板.QQ邮箱等多种功 ...

  4. shopnc 支持 支付宝快捷登陆 shopnc权限验证原理说明

    为目前使用的是shopnc商场二次开发,shopnc本身做了qq互联和微博快捷登陆的api,做成了集成通用的接口 首先说下基本的这种类型的api访问方式,首先,的有个配置文件,配置你申请的id和key ...

  5. 腾讯微博模拟登陆+数据抓取(java实现)

    不多说,贴出相关代码. 参数实体: package token.def; import java.io.Serializable; import java.util.Properties; publi ...

  6. 基于php实现QQ授权登陆

    第一步: 首先登陆QQ互联首页https://connect.qq.com/进行个人/企业认证.大概审核时间在一周左右. 认证通过之后创建应用: 这里主要用到应用的APP ID 和 APP Key  ...

  7. 电子设备的使用方法-第5版(佳明智能腕表小米手机联想轻薄笔记本群晖存储)我的腾讯QQ电子邮箱地址是 595076941@qq.com - 2021年9月5日

      电子设备的使用方法-第5版   (佳明智能腕表小米手机联想轻薄笔记本群晖存储) 2021年9月5日 我的腾讯QQ电子邮箱地址是  595076941@qq.com 前言 大家好,我叫徐晓亮,今天我 ...

  8. 技术笔记:Indy IdSMTP支持腾讯QQ邮箱邮件发送

    1.腾讯QQ邮箱的授权码问题 因为腾讯邮箱折腾了个底朝天,其要搞什么授权码登录第三方客户端,否则会报这个错误: 'Error: 请使用授权码登录.详情请看: http://service.mail.q ...

  9. 仿腾讯QQ竖直滑动导航菜单

    菜单就像qq软件的分组,鼠标经过自动显示相应组的内容. 效果体验网址:http://keleyi.com/a/bjad/nf86w2dv.htm 以下是源代码: <html> <he ...

随机推荐

  1. Qt QTableView 表格内添加控件

    目录 Qt QTableView 表格内添加控件 1. QItemDelegate 2. setIndexWidget 3. setIndexWidget + setLayout Qt QTableV ...

  2. 关于javaweb学习终点的一些感悟

    学习完javaweb后,自己做了一套管理项目,使用了mybatis,themeleaf和servlet.大致明白了servlet的真实应用场景. 说白了servlet就是用来指定浏览器url后面输入了 ...

  3. matplotlib---legend图例

    import numpy as np import matplotlib.pyplot as plt x = np.linspace(-3, 3, 50) y1 = 2 * x + 1 y2 = x ...

  4. oracle 11g手工建数据库过程

    创建需求和目的 1.需要把11机器上的oracle库中的表导入到12机器oracle库 2.11机器上的数据库fp在12机器上不存在,需要创建新库,以便导入.3.我们只需导入业务库shp即可,不需要把 ...

  5. Codeforces Round #705 (Div. 2) B. Planet Lapituletti(镜像时钟) 思维

    传送门:  https://codeforces.com/contest/1493/problem/B 题目: Example input 5 24 60 12:21 24 60 23:59 90 8 ...

  6. Xray学习

    Xray 目前支持的漏洞检测类型包括: XSS漏洞检测 (key: xss) SQL 注入检测 (key: sqldet) 命令/代码注入检测 (key: cmd-injection) 目录枚举 (k ...

  7. selenium模块无头化浏览器 设置不加载页面css、图片、js

    下面代码基于火狐浏览器,谷歌浏览器代码类似 from selenium import webdriver from selenium.webdriver.firefox.options import ...

  8. SpringCloudAlibaba微服务docker容器打包和部署示例实战

    概述 我们使用前面<SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(中)>的两个微服务示例,分别是库存微服务和订单微服务,基于Nacos注册中心和配置 ...

  9. 从零开始学YC-Framework之初步

    本文主要内容为如下几个方面? YC-Framework的取名出于什么考虑? YC-Framework的特点有哪些? YC-Framework的模块由哪些组成? 为什么要开发YC-Framework? ...

  10. Spring Cloud Alibaba入门篇

    学习条件 了解web三层架构 熟练应用SSM架构 了解Maven管理工具的使用 熟练使用SpringBoot,以及了解SpringBoot基本原理. 了解部分术语:应用.工具.耦合.负载等 温馨提示: ...