今天要说的只是针对QQ互联的操作,其他的互联请参考相关网站。

第一步:需要申请API接口的两码

自行登录QQ互联https://connect.qq.com/index.html,然后按照要求申请就OK啦。

过几天你会收到一封审核通过的邮件:

第二步:互联开始

首先假设我的网站有一个登陆按钮,那么这个按钮指向哪里呢?

所以第一个就是我们需要找的登陆,这里的话我是放在common控制器下的loginqq方法,所以我的按钮写的是:

<a href="{:U('Common/loginqq',array("type"=>"qq"))}" class="from" >QQ访问</a>

需要注意的是:你网站第一次申请的时候,请用QQ的图标来代替文字,不然申请不通过的

对应的函数代码:

//QQ登陆
public function loginqq($type = null) {
        empty($type) && $this->error('参数错误');
        import('Org.ThinkSDK.ThinkOauth');
        $sns = ThinkOauth::getInstance($type);
        redirect($sns->getRequestCodeURL());
    }

因为需要第三方类库,所以在头部需要use一下 use ThinkOauth;

第三方类库请到上一篇文章或者下载区找。

第三步:设置配置参数

因为你的参数需要传递给服务器,这样才能远程获取返回的token,用openid和token才能拿到用户的信息。

<?php
/**
* 等三方登陆插件配置
* @date: 2017年12月20日
* @author: yumaster
* @return:
*/
$SITE_URL = "http://yumaster.net/";
define('URL_CALLBACK', "" . $SITE_URL . "Home/Common/callback?type=");
return array(    
    #腾讯QQ登录配置
    'THINK_SDK_QQ' => array(
        'APP_KEY' => '101445751', # APP ID
        'APP_SECRET' => '85df045b8b38bbad049a9874337ee5b6', # KEY
        'CALLBACK' => URL_CALLBACK . 'qq',
    ),
 ),
);

所以这个配置是需要自己在网站添加的,我的做法是单独的sdk.php,然后再config.php中 'LOAD_EXT_CONFIG'  加载进来的

需要注意的是:

1.你的网站要填写正确的回调地址,保证要和QQ互联上填写的一样,修改其中一个之后,另一个也要及时修改。否则很难找到这个原因

2.填写在QQ互联的地址是不需要填写参数的,所以这里后面的 ?type=qq 在QQ互联的后台是没有的

3.在传递参数的时候是不允许 yumaster.net/Home/Common/callback/type/qq 这样的写法是错的,需要用 ? 来实现

到这里之后,我们可以在类库中打印出来查看我们的信息是否填写正确,在 ThinkPHP/Library/Org/ThinkSDK/ThinkOauth.class.php 的169行添加:

dump($params);die;

来打印自己的参数是否传递进去,实际上可以不用操作,直接看是不是报错就可以了。

第四步:增加回调函数

在上面我们写的回调地址对应的写上回调方法:common/callback

//QQ登陆回调
public function callback($type = null, $code = null) {
            //防止乱码
        header("Content-type: text/html; charset=utf-8");
        (empty($type) || empty($code)) && $this->error('参数错误');
        import('Org.ThinkSDK.ThinkOauth');
        $sns = ThinkOauth::getInstance($type);
        $extend = null;
        //腾讯微博
        if ($type == 'tencent') {
            $extend = array('openid' => $this->_get('openid'), 'openkey' => $this->_get('openkey'));
        }
        $tokenArr = $sns->getAccessToken($code, $extend);
            /**
             * $tokenArr 返回的参数
             * array(4) {
             *  ["access_token"] => string(32) "EF689CF1CEC547B2C3EA7F1367A3D1E8"
             *  ["expires_in"] => string(7) "7776000"
             *  ["refresh_token"] => string(32) "1DA94062299F40B1B7686EDB18D3CCE5"
             *  ["openid"] => string(32) "A100C2E7A02D9AE2E2AD72442275C34C" 用户唯一识别标志
             *}
             */
        $openid = $tokenArr['openid'];
        $token = $tokenArr['access_token'];
        if ($openid) {
            $field = strtolower($type);
            $data = $sns->call('user/get_user_info');
            //dump($data);die;
            /**
           * $data 返回参数
                 * array(18) {
                 *  ["ret"] => int(0)
                 *  ["msg"] => string(0) ""
                 *  ["is_lost"] => int(0)
                 *  ["nickname"] => string(21) "土伦"  昵称
                 *  ["gender"] => string(3) "男" 性别
                 *  ["province"] => string(0) ""
                 *  ["city"] => string(0) ""
                 *  ["year"] => string(4) "1996" 出生年
                 *  ["figureurl"] => string(73) "http://qzapp.qlogo.cn/qzapp/101445751/A100C2E7A02D9AE2E2AD72442275C34C/30" 空间头像
                 *  ["figureurl_1"] => string(73) "http://qzapp.qlogo.cn/qzapp/101445751/A100C2E7A02D9AE2E2AD72442275C34C/50"
                 *  ["figureurl_2"] => string(74) "http://qzapp.qlogo.cn/qzapp/101445751/A100C2E7A02D9AE2E2AD72442275C34C/100"
                 *  ["figureurl_qq_1"] => string(69) "http://q.qlogo.cn/qqapp/101445751/A100C2E7A02D9AE2E2AD72442275C34C/40" QQ头像
                 *  ["figureurl_qq_2"] => string(70) "http://q.qlogo.cn/qqapp/101445751/A100C2E7A02D9AE2E2AD72442275C34C/100"
                 *  ["is_yellow_vip"] => string(1) "0"
                 *  ["vip"] => string(1) "0"
                 *  ["yellow_vip_level"] => string(1) "0"
                 *  ["level"] => string(1) "0"
                 *  ["is_yellow_year_vip"] => string(1) "0"
                 *}
                 */
                $num = M('qq')->where(array("q_img"=>$data["figureurl_qq_2"]))->getField("q_num");
                if($num){
                $txt = array(
                "q_name"=>$data['nickname'],
                "q_img"=>$data["figureurl_qq_2"],
                "q_ip"=>get_client_ip(),
                "q_time"=>time(),
                "q_num"=>1,
                );
                M('qq')->add($data);
                }else{
                M('qq')->where(array("q_img"=>$data["figureurl_qq_2"]))->setInc("q_num");
                }
            session("nickname",$data["nickname"]);
                  session("nickimg",$data["figureurl_qq_2"]);
                  $this->redirect('Index/index');
        } else {
            echo "<script>alert('系统出错;请稍后再试!');document.location.href='" . __APP__ . "';</script>";
        }
    }

在回调的时候我们可以写更多的操作和验证,这里我就简单的判断用户是不是在数据库中,在就访问次数+1,不在就存入数据库。大致上就是这些了。

QQ互联申请及配置的更多相关文章

  1. 对163k地方门户网站系统QQ互联功能修改

    163k地方门户网站QQ互联申请时遇到的问题: "禁止开发商强制用户重新注册或绑定其他帐号" 原因是用户登录完QQ还需要注册帐号或者绑定原有帐号 163k地方门户网站的QQ互联登录 ...

  2. QQ互联开发-01-开发者注册和网站应用申请

    首先需要申请网站应用 要想使用QQ互联,首先需要先注册一个开发者账号,使用QQ号码可以注册,注册后,就可以创建网站应用了: 通过下面地址:https://connect.qq.com/,我们去登录QQ ...

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

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

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

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

  5. 登陆整合实现-QQ互联认证(ASP.NET版本)

    原文:登陆整合实现-QQ互联认证(ASP.NET版本) 首先 我们创建一个qq.ashx的页面,这个页面会跳转到QQ的请求界面 代码如下: QQSettingConfig qqSettingConfi ...

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

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

  7. Destoon QQ互联一键登录审核不通过的解决方案

    在QQ互联上申请帐号之后提交了审核, 后台填写APPID和KEY之后自己申请的QQ号可以正常登录,但QQ互联审核的时候一直审核不通过说是“您的网站审核未通过,原因是“点击QQ登录按钮提示登录失败或出现 ...

  8. 一元云购qq互联回调地址错误解决办法

    经过追踪,点击登录后调用 system/modules/api/下面的qqlogin.action.class.php 里面又调用了qq 互联php接口样例里的QC.php的QC类的方法qq_logi ...

  9. .Net QQ互联教程

    qq互联只需要备案即可申请,申请成功后可以到qq互联官网查看教程,本站开始想使用js的教程但是由于本站需要绑定本站的账号用js教程无法完成,所以使用原始的oauth2.0来完成. 申请qq互联接口 q ...

随机推荐

  1. Android 开发笔记___AutoComplateTextView__自动完成文本框

    原理:EdtText结合监听器TextWatcher与下拉框spinner,一旦监控到EditText的文本发生变化,就自动弹出适配好的文字下拉内容. 属性以及设置方法: XML中的属性 代码中 说明 ...

  2. arrow functions 箭头函数

    ES6里新增加的,与普通方法不同的地方 1.this 的对象在定义函数的时候确定了,而不是在使用的时候才决定 2.不可以使用 new  ,也就不能当构造函数 3.this 的值一旦确定无法修改     ...

  3. jQuery选择器(可见性选择器)第五节

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  4. VS2015企业版序列号

    vs2015 企业版HM6NR-QXX7C-DFW2Y-8B82K-WTYJV2XNFG-KFHR8-QV3CP-3W6HT-683CH

  5. 微服务下的契约测试(CDC)解读

    1. 前言 有近两周没有在公众号中发表文章了,看过我之前公众号的读者都知道,公众号中近期在连载<RobotFramework接口自动化系列课程>,原本计划每周更新一篇,最近由于博主在带一个 ...

  6. NFS服务器的安装与配置

    由于实验室的项目需要实现在CephFS之上建立NFS之上,所以记录一下NFS服务器的安装与配置流程. 1.NFS服务的简介: NFS 是 Network File System 的缩写,是Sun公司于 ...

  7. 在C#中interface与abstract class的区别

    1)在继承抽象类时,必须覆盖该类中的每一个抽象方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值,这一点与接口相同. 2)当父类已有实际功能的方法时,该方 ...

  8. 函数chdir、fchdir和getcwd

    函数chdir.fchdir和getcwd chdir.fchdir函数     每个进程都有一个当前工作目录,当前目录是进程的一个属性     当用户登录UNIX系统时,其当前工作目录通常是口令文件 ...

  9. java 中 “文件” 和 “流” 的简单分析

    java 中 FIle 和 流的简单分析 File类 简单File 常用方法 创建一个File 对象,检验文件是否存在,若不存在就创建,然后对File的类的这部分操作进行演示,如文件的名称.大小等 / ...

  10. 为Spark Application指定不同的JDK版本

    随着企业内部业务系统越来越多,基于JVM的服务,通常情况线上环境可能会有多套JDK跑不同的服务.大家都知道基于高版本的Java规范编写的服务跑在低版本的JVM上会出现:java.lang.Unsupp ...