精华内容
下载资源
问答
  • qq互联
    2020-10-16 17:25:35

    摘要

    最近个人博客项目准备使用QQ第三方登录,需要使用QQ第三方登录的话需要申请QQ互联认证,通过才能创建应用,这里不得不吐槽下QQ互联了,审核机制不友好,网站体验非常差,正好最近看到很多人在群里问相关的问题,再此记录几个坑,希望看到文章的朋友可以少踩几个坑,使申请更加顺利。

    第一步:注册成为开发者

    1.打开QQ互联官网
    在这里插入图片描述
    2.QQ登录后,单击你登录的头像进行开发者资料审核填写。第一个坑就在这里,很多人登录后都不知道在哪儿注册,切记点击你的QQ头像。
    在这里插入图片描述
    3.根据你个人情况,进行资料填写即可。个人开发者就选择个人。
    在这里插入图片描述
    (1)图中的姓名指的是网站开发者的本人姓名,而非网站名字。

    (2)其他几项照常填写即可。

    (3)第二个坑就是手持身份证照片了。注意的地方有两点:

    1.务必能看清你的五官,请找个像素高点的,在光线充足的地方拍。

    2.一定记得是用手机后摄像头拍摄,前摄拍出来的照片是反着的。身份证信息要能看得清。

    3.照片大小在3M以内。

    当时我没注意,就用的前置摄像拍的,第一次就没通过。

    4.最后再进行提交即可。如果提交后仍然显示未提交,刷新下网页即可,这网站加载贼慢。

    5.如果已经申请并且被驳回的,请仔细看看回复的邮件信息,查看下未通过的原因,点击链接进去检查下信息是否正确。

    最后,审核时间的话,一般来说还是很快的,我审核了三次,第一次和第二次都是在半小时内就审核完了。最后一次是大概因为国庆假期,我也没空去看通过没有,结果我假期结束我去看,八天都没动静。最后通过QQ互联底部的在线人工才给我处理了,几分钟就完事了。所以你在审核的时候,如果超过一天没审核,你就可以通过底部在线人工给你处理。
    在这里插入图片描述

    第二步:应用注册

    当我们成功注册成为开发者后,就可以进行应用注册,从而审核通过后,就可以调用QQ的接口了。

    1.点击头部 应用管理 进行资料填写。是网站应用就选网站应用,移动应用则选移动应用。在这里插入图片描述
    2.填写资料。
    在这里插入图片描述
    网站类别,这个看你情况而定,如果实在不知道的话,就都选其他就行了。我就是全选的其他,这个应该无伤大雅。

    踩坑点:

    (1)网站名称,切记一定要与你域名备案的名称一致。

    (2)网站简介,稍微认真点写吧,实在不行,度娘可以教你做事。

    3.创建之后,填写域名以及回调地址等信息。
    在这里插入图片描述
    踩坑点:

    (1)网站地址,就填写你域名即可。申请SSL证书,有https就写https。

    (2)回调地址,这个是重点,很多人都不知道回调地址怎么写。这个所谓的回调地址其实就是你在获取到用户QQ信息后,他返回来的数据处理逻辑。也就是你的回调逻辑层。填写点注意:1.一定是在你的主域名下,不要乱写。比如你的域名是www.4399.com,那你的回调地址肯定是在此一级域名之下。比如:www.4399.com/qqcalback,而这个qqcalback就是你处理QQ返回给你信息的逻辑层,在MVC里就是控制器层。

    (3)提供方就是你本人姓名。

    (4)备案号不用多说,照常填写就是了。图标也是一样,条件都写在那儿了。

    最后,到这里理论来说,完成的差不多了,C#接入QQ互联Demo,有人感兴趣的话后续我会再放出来,这里只是踩坑。

    最后一步:首页放置QQ登录按钮

    其实这一步应该放到上面讲。在你提交之前就应该在页面放置QQ登录按钮,不然审核是不会通过的。以我个人网站举例,首页必须放置QQ登录按钮,其次,按钮单击后,一定要跳转到授权页面,即使没有审核通过也要有反应,哪怕是错误的页面,例如下图即可,否则也不会通过审核:在这里插入图片描述
    我个人网站头部QQ按钮放置效果:
    在这里插入图片描述
    最后通过审核后,就可以通过API文档进行开发登录授权了。审核时间我的话大概是一天的样子。通过审核后,就可以看到下图所示:
    在这里插入图片描述

    结尾

    我在说一个我在其中遇到的问题:由于我是第一次接QQ互联,所以踩了不少坑,到了最后呢我审核通过后,回调地址这些都填好后,开始写逻辑。后续回调逻辑写好了,我在本地调试我才发现,授权登录按钮逻辑打断点是可以命中的,也能成功弹出QQ授权登录的界面。但是回调层逻辑断点死活命中不了,而且QQ授权弹出后,不会返回我的网站界面,且页面报错提示我State丢失。我第一时间就检查是不是逻辑哪儿写错了,结果也没发现哪儿有错。最后才发现是因为我写QQ互联之前,已经将网站发布到了服务器,也就是说外网是能访问的,只不过没法QQ登录。而我本地调试,QQ登录后跳转到了外网也就是服务器上的回调地址,并非本地资源下的回调地址。所以我的断点命中不了,也提示我报错。因为我本地逻辑回调地址下的逻辑是与服务器上有所不同的,好家伙,这一波下饭操作搞的属实难受。

    详情可见我个人博客:http://www.guoqingyun.top/

    更多相关内容
  • 我们同样进入到 QQ 互联官网首页,找到下图所示 这里,我选择创建的是网站应用,点击开始创建 2、开始创建 可以看到,上图中我已经创建成功了一个应用,并通过了审核 我们点击“创建应用”之后,会弹出一个对话框...
  • QQ互联上申请帐号之后提交了审核, 后台填写APPID和KEY之后自己申请的QQ号可以正常登录,但QQ互联审核的时候一直审核不通过说是“您的网站审核未通过,原因是“点击QQ登录按钮提示登录失败或出现错误信息(无跳转...
  • 主要介绍了PHP调用QQ互联接口实现QQ登录网站功能,结合实例形式分析php调用QQ互联接口实现QQ登录网站的相关操作技巧,需要的朋友可以参考下
  • 下载代码 创建目录kuange 代码复制kuange下 放置extend下
  • * QQ互联 oauth * @author dyllen * */ class Oauth { //取Authorization Code Url const PC_CODE_URL = 'https://graph.qq.com/oauth2.0/authorize'; //取Access Token Url const PC_ACCESS_TOKEN_URL = '...
  • NULL 博文链接:https://913.iteye.com/blog/2238203
  • 主要介绍了Yii2中OAuth扩展及QQ互联登录的方法,实例分析了OAuth扩展的相关配置与QQ互联登陆的实现技巧,需要的朋友可以参考下
  • qq互联依赖的jar包

    2018-05-03 18:53:11
    此jar包是本人优化后的,加入了com.qq.connect.api.BaseUserInfo和com.qq.connect.javabeans.BaseUserInfoBean两个类供qq第三方登录获取用户信息使用,实现第三方登陆详情请移步我的博客...
  • 本文给大家介绍了修复ShopNC使用QQ 互联时提示100010 错误的方法,以及QQ互联里面的处理方法,有需要的小伙伴可以参考下
  • PHP只需几行就能实现QQ第三方快捷登录,可以获得QQ用户的详细信息! 分享给大家,一定要帮忙好评啊,多回复多评论呀!
  • QQ互联分发源码V1.0 无需申请对接QQ登陆 解压密码:bbs.jiuy.cc
  • JAVA 项目实现 QQ 互联的功能 QQ 授权登录系统(官方...一直使用discuz论坛整合的QQ互联、一直没有使用java整合过QQ互联、网上搜了很多,貌似也有没有很清晰的说明、最终使用了官方的demo测试成功。(官方demo) QQ互联
  • X2 是第一个默认支持QQ互联的论坛版本,自2011年发布以来,受到了站长们的喜爱和关注,QQ互联也给会员们提供了更好的登录体验。   时隔两年,QQ互联服务做了一些升级,而 Discuz! X2 版本上自带的QQ互联代码有点...
  • qq互联sdk--php

    2018-05-09 14:43:39
    qq互联sdk 开发包,用于第三方一键登陆使用。适用于新手
  • X1.5 之后,QQ互联又发布了QQ互联插件版 for phpwind 8.3,可为pw站点提供QQ互联最核心的QQ帐号登录功能,安装和使用都非常简便。    官方网址: http://www.discuz.net/forum-3898-1.html
  • QQ互联插件版 for Discuz... X1.5 之后,QQ互联又发布了QQ互联插件版 for phpwind 8.0,可为pw站点提供QQ互联最核心的QQ帐号登录功能,安装和使用都非常简便。  官方网址:http://www.discuz.net/forum-3898-1.html
  • QQ互联插件版 for Discuz! 7.2,整合QQ互联最核心的QQ帐号登录功能和看帖分享功能,能够为网站用户提供最简便快捷的注册和登录体验,并且安装非常简单。
  • QQ互联插件版针对Discuz! x1.5和7.2开发,允许使用Discuz X2中内置的QQ互联功能。 QQ互联插件版 for Discuz! X1.5,整合QQ互联最核心的QQ帐号登录功能和看帖分享功能,并且安装非常简单。
  • QQ互联插件版 for Discuz! 7.2,整合QQ互联最核心的QQ帐号登录功能和看帖分享功能,能够为网站用户提供最简便快捷的注册和登录体验,并且安装非常简单。
  • 查询并批量解除你登陆的QQ授权过多少网站获取你的头像信息及公开个人资料。
  • QQ互联插件版针对Discuz! x1.5和7.2开发,允许使用Discuz X2中内置的QQ互联功能。 QQ互联插件版 for Discuz! X1.5,整合QQ互联最核心的QQ帐号登录功能和看帖分享功能,并且安装非常简单。
  • 申请QQ互联后可以分发给更多的网站使用 安装与配置请下载后打开readme.txt 发起登陆:域名/api.php?token= 登陆之后会成功跳转到后台token对应的回调地址,会带着获取到openid回调
  • QQ互联插件版 for Discuz! X1.5 之后,QQ互联又发布了QQ互联插件版 for phpwind 8.0,可为pw站点提供QQ互联最核心的QQ帐号登录功能,安装和使用都非常简便。
  • (1)QQ互联官网申请:https://connect.qq.com/ 说明:登录后,首先认证个人开发者,然后才有权限创建应用,申请填资料的时候,务必真实信息,不然审核打回来,得等很久才通过。 (2)登录个人开发者QQ:移动...

    目录

    • 1.获取应用AppId
    • 2.获取并配置SDK开发包
    • 3.AndroidManifest.xml引入SDK资源
    • 4.代码引入
    • 5.总结


    1.获取应用AppId

            (1)QQ互联官网申请:https://connect.qq.com/

    说明:登录后,首先认证个人开发者,然后才有权限创建应用,申请填资料的时候,务必真实信息,不然审核打回来,得等很久才通过。 

            (2)登录个人开发者QQ:移动应用——开始创建

            (3)进入控制台——应用管理——创建应用


            (4)选择:创建移动应用

            (5)根据自身情况:资料填写

            (6)APP应用签名+logo

            签名工具内容如下:

            (7)创建成功,得到的APPID将在AndroidStudio中使用


    2.获取并配置SDK开发包

            (1)下载链接:https://wiki.connect.qq.com/sdk%e4%b8%8b%e8%bd%bd

            (2)压缩包文件名:opensdk_355_lite_2021-07-30.zip,解压提取文件:

            (3)找到,我们需要的jar包资源,粘贴拷贝一份在电脑桌面。

    说明:官网文档没有明确说明jar包清单,其实需要3个jar包,而解压出的文件,只有一个jar包。因此其它的两个就得去示例项目的libs中手动拷贝,如下:

            ——copy核心库open_sdk_3.5.5.79_ra741783e_lite.jar

            ——copy支持库:mid-sdk-2.10.jarmta-sdk-2.0.0.jar

    说明:open_sdk_lite.jar是旧版本SDK核心库

            (4)从电脑桌面复制3个jar包AndroidStudio粘贴项目至项目工程libs目录,并添加依赖引入

            ——工程目录libs

            ——加载jar包资源:app/build.gradle

    implementation fileTree(dir: 'libs', include: '*.jar')


    3.AndroidManifest.xml引入SDK资源

            (1)添加Android API 31  系统版本 12 的权限查询,否则Android 12 系统跳转不到授权页,导致点击登录按钮,查询不到手机上已安装的腾讯QQ的APP,出现下载QQ页面,添加如下:

        <queries>
            <package android:name="com.tencent.mobileqq" />
        </queries>

            (2)添加Android应用权限项

        <!-- qq登陆所需 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <uses-permission android:name="android.permission.GET_TASKS"/>
        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

            (3)注册SDK需要跳转的Activity,这是SDK封装好的,只需要注册在<application>标签中,就能调用SDK的功能了。

     <!-- 第三方qq登录 -->
            <activity
                android:name="com.tencent.connect.common.AssistActivity"
                android:configChanges="orientation|keyboardHidden"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />
            <activity
                android:name="com.tencent.tauth.AuthActivity"
                android:launchMode="singleTask"
                android:noHistory="true"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.VIEW" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="android.intent.category.BROWSABLE" />
                    <data android:scheme="tencentAPPID" />
                </intent-filter>
            </activity>

    说明:  <data android:scheme="tencentAPPID" /> 需要替换APPID 为自己的创建应用申请通过的APPID,tencent不能删,例如:tencent123456


    4.代码引入

            布局就不说了,根据自己需求慢慢搞。

            (1)首先创建获取Tencent实例

            ——添加全局变量:

    //声明Tencent实例名称
    public static Tencent mTencent;

            ——创建Tencent实例:

    mTencent = Tencent.createInstance("APPID", LoginActivity.this);
            if (mTencent == null) {
                SLog.e(TAG, "腾讯实例创建失败");
                finish();
            }

            (2)登录按钮添加单击监听事件,点击按钮调用自定义方法onClickLogin()

            (3)onClickLogin()

     private void onClickLogin() {
            mTencent.login(this, "all", loginListener);
    }

            (4)loginListener报错?,报错就对了,这是登录回调接口。那就写接口实现登录的login()方法。如下:

        IUiListener loginListener = new BaseUiListener() {
            @Override
            protected void doComplete(JSONObject values) {
                /** 此处回调QQ用户数据处理 */
                initOpenidAndToken(values); //初始化Token
                //updateUserInfo(); 更新用户信息,头像,用户名
                //updateLoginButton(); 登录按钮更新为已登录
            }
        };
    
        public static void initOpenidAndToken(JSONObject jsonObject) {
            try {
                String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
                String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
                String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);
                if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)
                        && !TextUtils.isEmpty(openId)) {
                    mTencent.setAccessToken(token, expires);
                    mTencent.setOpenId(openId);
                }
            } catch (Exception e) {
            }
        }

            (5)BaseUiListener报错?

        private class BaseUiListener extends DefaultUiListener {
    
            @Override
            public void onComplete(Object response) {
                if (null == response) {
                    FileCodeUtil.showResultDialog(LoginActivity.this, "返回为空", "登录失败");
                    return;
                }
                JSONObject jsonResponse = (JSONObject) response;
                if (jsonResponse.length() == 0) {
                    FileCodeUtil.showResultDialog(LoginActivity.this, "返回为空", "登录失败");
                    return;
                }
                FileCodeUtil.showResultDialog(LoginActivity.this, response.toString(), "登录成功");
    
                doComplete((JSONObject) response);
            }
    
            protected void doComplete(JSONObject values) {
    
            }
    
            @Override
            public void onError(UiError e) {
                FileCodeUtil.toastMessage(LoginActivity.this, "onError: " + e.errorDetail);
                FileCodeUtil.dismissDialog();
            }
    
            @Override
            public void onCancel() {
                FileCodeUtil.toastMessage(LoginActivity.this, "onCancel: ");
                FileCodeUtil.dismissDialog();
            }
        }

            (6)数据回调成功后,去把头像用户之类的数据,更新显示出来。就得创建线程去更新UI数据

        //下面的msg.what的值,来自updateUserInfo()的DefaultUiListener回调接口
        Handler mHandler = new Handler() {
    
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 0) {
                    JSONObject response = (JSONObject) msg.obj;
                    if (response.has("nickname")) { //提取QQ昵称参数
                        try {//成功就执行的操作
                            //mUserInfo.setVisibility(android.view.View.VISIBLE);设置用户名可见
                            //mUserInfo.setText(response.getString("nickname"));//设置QQ昵称刀TextView上
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                } else if(msg.what == 1){
                    /** 需要更新的操作 */
                    //Bitmap bitmap = (Bitmap)msg.obj; 更新ImageViwe为QQ头像
                    //mUserLogo.setImageBitmap(bitmap);
                    //mUserLogo.setVisibility(android.view.View.VISIBLE);
                }
            }
    
        };

            (7)这个方法放在登录点击按钮处调用

     private void updateUserInfo() {
            / ** 回掉成功后解析数据,Message发送数据UI线程
            if (mTencent != null && mTencent.isSessionValid()) {
                IUiListener listener = new DefaultUiListener() {
                    @Override
                    public void onError(UiError e) {
                    }
                    @Override
                    public void onComplete(final Object response) {
                        Message msg = new Message();
                        msg.obj = response;
                        msg.what = 0;
                        mHandler.sendMessage(msg);
                        new Thread(){
                            @Override
                            public void run() {
                                JSONObject json = (JSONObject)response;
                                if(json.has("figureurl")){
                                    Bitmap bitmap = null;
                                    try {
                                        bitmap = Util.getbitmap(json.getString("figureurl_qq_2"));
                                    } catch (JSONException e) {
                                        SLog.e(TAG, "Util.getBitmap() jsonException : " + e.getMessage());
                                    }
                                    Message msg = new Message();
                                    msg.obj = bitmap;
                                    msg.what = 1;
                                    mHandler.sendMessage(msg);
                                }
                            }
    
                        }.start();
                    }
    
                    @Override
                    public void onCancel() {
    
                    }
                };
                UserInfo info = new UserInfo(this, mTencent.getQQToken());
                info.getUserInfo(listener);
    
            } else {
                /** 未登录状态 */
                //mUserInfo.setText("");
                //mUserInfo.setVisibility(android.view.View.GONE);
                //mUserLogo.setVisibility(android.view.View.GONE);
            }
        }

            (8)自己的应用程序与腾讯QQ应用程序数据交互,必须使用onActivityResult来接收返回的数据

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            Log.d(TAG, "-->onActivityResult " + requestCode  + " resultCode=" + resultCode);
            if (requestCode == Constants.REQUEST_LOGIN ||
                    requestCode == Constants.REQUEST_APPBAR) {
                Tencent.onActivityResultData(requestCode,resultCode,data,loginListener);
            }
    
            super.onActivityResult(requestCode, resultCode, data);
        }

    5.总结

    仅自己学习记录,如有错误,敬请谅解~,谢谢~~~ 

    展开全文
  • QQ互联帝国CMS登录插件 需要帝国 v6.5 以上 1,QQ登录注册可送积分 2,使用QQ空间名做会员注册表单中的联系人姓名 3,使用QQ空间头像作为用户头像 4,QQ登录注册绑定模板仿科讯CMS的QQ登录页面 5, AJAX提示用户名与...
  • 动网QQ互联插件 v1.0

    2021-04-02 20:30:00
    动网QQ互联插件 v1.0,声明: 程序修改优化:小牛(QQ:282886356),程序给大家分享,绝无交易行为,切勿付费购买受骗!使用过程中有任何疑问请到QQ群:43033873交流 动网QQ互联 For 小牛优化版3.1(适应于论坛程序...
  • <p>QQ互联插件版针对Discuz! x1.5和7.2开发,允许使用Discuz X2中内置的QQ互联功能。</p><p>QQ互联插件版 for Discuz! X1.5,整合QQ互联最核心的QQ帐号登录功能和看帖分享功能,并且安装非常简单。</p>

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,161
精华内容 9,664
关键字:

qq互联

友情链接: lFSR counters.zip