在你的 App 中集成手机QQ一键授权(注册)登录功能,达到快速注册、快速登录功能
按照本教程的操作指引,预计5分钟即可帮你实现并掌握QQ登录的实现

申请开通QQ互联

https://connect.qq.com/

前往QQ互联官网,创建一个移动应用的接入,审核通过后,你就可以获取到一个 APP ID;
下文中所提的 APP ID,或者 oauthConsumerKey,以及 oauth_consumer_key 都是值得这里的 APP ID;

安装 Flutter 依赖

pubspec.yaml 文件增加依赖

dependencies:flutter_qq: ^0.0.5

安装依赖

$ flutter pub get

引入 package

在 dart 文件中,引入插件,下面会用到

import 'package:flutter_qq/flutter_qq.dart';

配置 Android / IOS 打包设置

Android

修改 AndroidManifest.xml 文件

添加权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

application标签下增加:

<uses-library android:name="org.apache.http.legacy" android:required="false" />

添加activity

下面的 [QQ APPId] 请用上面的 APP ID 替换

<activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden"android:screenOrientation="behind"android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activityandroid:name="com.tencent.tauth.AuthActivity"android:launchMode="singleTask"android:noHistory="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="[QQ APPId]" /></intent-filter>
</activity>

IOS

项目的Info.plist文件中增加:

<key>CFBundleURLTypes</key>
<array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>tencent</string><key>CFBundleURLSchemes</key><array><string>tencent1107493622</string></array></dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array><string>mqq</string><string>mqqapi</string><string>mqqwpa</string><string>mqqbrowser</string><string>mttbrowser</string><string>mqqOpensdkSSoLogin</string><string>mqqopensdkapiV2</string><string>mqqopensdkapiV3</string><string>mqqopensdkapiV4</string><string>wtloginmqq2</string><string>mqzone</string><string>mqzoneopensdk</string><string>mqzoneopensdkapi</string><string>mqzoneopensdkapi19</string><string>mqzoneopensdkapiV2</string><string>mqqapiwallet</string><string>mqqopensdkfriend</string><string>mqqopensdkdataline</string><string>mqqgamebindinggroup</string><string>mqqopensdkgrouptribeshare</string><string>tencentapi.qq.reqContent</string><string>tencentapi.qzone.reqContent</string>
</array>
<key>NSMicrophoneUsageDescription</key>
<string>microphoneUsageDescription</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>photoLibraryDesciption</string>
<key>NSCameraUsageDescription</key>
<string>cameraUsageDesciption</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIBackgroundModes</key>
<array><string>fetch</string><string>remote-notification</string>
</array>

项目的AppDelegate.m文件中增加:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)urloptions:(NSDictionary<NSString*, id> *)options
{NSString * urlStr = [url absoluteString];[[NSNotificationCenter defaultCenter]postNotificationName:@"QQ" object:nil userInfo:@{@"url":urlStr}];return YES;
}

调用手机QQ

 loginQQ () async {const appid = '1105644913';await FlutterQq.registerQQ(appid);var qqResult = await FlutterQq.login();    if (qqResult.code == 0) {// 登录成功Fluttertoast.showToast(msg: '授权成功', gravity: ToastGravity.CENTER, fontSize: 14);var res = await Apifm.loginQQConnect(appid, qqResult.response['openid'], qqResult.response['accessToken']);if (res['code'] == 10000) {// 用户不存在,则先注册await Apifm.registerQQConnect({'oauthConsumerKey': appid,'openid': qqResult.response['openid'],'accessToken': qqResult.response['accessToken'],});// 注册完后重新登录res = await Apifm.loginQQConnect(appid, qqResult.response['openid'], qqResult.response['accessToken']);}if (res['code'] != 0) {// 登录失败Fluttertoast.showToast(msg: res['msg'], gravity: ToastGravity.CENTER, fontSize: 14);return;}processLoginSuccess (res['data']['token'], res['data']['uid']); // 登录成功后的业务处理} else if (qqResult.code == 1) {// 授权失败Fluttertoast.showToast(msg: qqResult.message, gravity: ToastGravity.CENTER, fontSize: 14);} else {// 用户取消授权Fluttertoast.showToast(msg: '已取消', gravity: ToastGravity.CENTER, fontSize: 14);}}

方法拆解

初始化QQ互联组件

FlutterQq.registerQQ(APP ID);

弹出QQ授权窗口

FlutterQq.login();

用户点击同意授权后,你就可以取到授权参数:openid、accessToken

QQ互联一键注册

 Apifm.registerQQConnect(Map<String, String> params)

QQ互联的一键注册功能,需要以下参数:

QQ授权后返回的参数:

oauthConsumerKey、openid、accessToken

具体请查阅QQ互联的接口文档说明

可选参数:

referrer 邀请人,邀请你注册的用户id
postJsonString 注册的扩展信息,Json数据格式

QQ互联一键登录

 Apifm.loginQQConnect(String oauthConsumerKey, String openid, String accessToken)

登录的3个参数,请查阅QQ互联的接口文档返回值说明

用户管理

开通开发者后台

《使用 apifm 插件进行 Flutter 云开发——安装篇》

用户管理

本例Flutter源码:

https://github.com/gooking/apifm-flutter-demo

使用 apifm 插件进行 Flutter 云开发——QQ一键登录/注册相关推荐

  1. 使用 apifm 插件进行 Flutter 云开发——微信一键登录/注册

    在你的 App 中集成手机微信一键授权(注册)登录功能,达到快速注册.快速登录功能 按照本教程的操作指引,预计5分钟即可帮你实现并掌握微信登录的实现 用户管理 微信开放平台创建应用 https://o ...

  2. 使用 apifm 插件进行 Flutter 云开发——积分功能(积分明细 / 积分券 / 连续签到得积分 / 购物积分抵扣规则)

    功能说明: 积分券 后台批量生成积分券(每个积分券有自己独立的券号): 你可以根据自己的需要: 制作实体vip积分卡,类似目前的超市卡,刮开涂层后查看券号: 印刷纸质优惠券.积分券,上面印刷券号: 使 ...

  3. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  4. 微信小程序云开发用户身份登录_微信小程序+云开发实现欢迎登录注册

    前段时间和同学一起做了一个小程序,用来参加学校的比赛,完成后把项目内容分割一下,贴到博客上面,算是学习记录和总结吧. 因为是学生党,而且并没有很大的需要,所以选择了微信小程序为开发者提供的" ...

  5. QQ一键登录助手_DedeCMS插件_适合FOR V55 V56 V57_GBK.zip

    QQ一键登录助手_DedeCMS插件_适合FOR V55 V56 V57_GBK.zip 此插件是方便会员进行注册登录操作,为 站长 带来更多活跃会员 使用此插件要注意一下几点: 1.此插件使用前请到 ...

  6. Android插件化的思考——仿QQ一键换肤,思考比实现更重要!

    Android插件化的思考--仿QQ一键换肤,思考比实现更重要! 今天群友希望写一个关于插件的Blog,思来想去,插件也不是很懂,只是用大致的思路看看能不能模拟一个,思路还是比较重要的,如果你有兴趣的 ...

  7. android 仿qq换肤功能,Android插件化的思考——仿QQ一键换肤,思考比实现更重要!.doc...

    Android插件化的思考--仿QQ一键换肤,思考比实现更重要! 关于QQ的换肤,他们的实现思路我不是很清楚,但是你可以看一下这张换肤的截图 我们想使用哪个主题就直接下载就好了,这一实现的过程我们大致 ...

  8. php 一键登录插件,[免费]ZblogPHP QQ一键登录免费插件

    先上背景:自从装了ZBlogPHP程序,一直在寻找QQ互联的插件,因为我懒得记密码!!!因为懒...所以就在某应用中心搜索,工夫不负有心人,找是找到了,,但是,,,但是价格不菲啊!!! ,,,作为一个 ...

  9. 织梦DEDECMS QQ一键登录插件返回空白解决方法

    修改织梦网站时,遇到个QQ一键登录返回是空白的问题 找了好久没发现什么原因,最后才知道原因在于服务器, 因为腾讯OAuth2.0采用的是https协议进行数据请求,QQ一键登录插件采用curl拓展对数 ...

最新文章

  1. 腐蚀rust高速箭怎么做不了_皮带轮动平衡怎么做
  2. 控制-超前校正-C语言实现
  3. poj2479与poj2593 , 同一道DP题
  4. 学习笔记(47):Python实战编程-pack布局
  5. 数据结构——最小生成树之克鲁斯卡尔算法(Kruskal)
  6. Android商城开发系列(二)——App启动欢迎页面制作
  7. linux命令行sip电话,基于Linux和MiniGUI的SIP电话终端设计
  8. bean type not found
  9. 利用thread和sleep生成字符串的伪随机序列
  10. 3.5框架不能创建就加这一段代码
  11. Pyrene-PEG2000-RB,含有芘丁酸和罗丹明的PEG,Rhodamine-PEG2000-Pyrene
  12. win7共享中心服务器运行失败,Win7系统网络与共享中心无法打开怎样解决?
  13. 致远OA A6 员工敏感信息泄露
  14. 机器人操作系统ROS(9)Gazebo物理仿真(摄像头仿真)
  15. python解一元二次方程复数_python – SymPy和复数的平方根
  16. 图像超分辨率重建(pytorch)
  17. python进程通信方式总结(一):管道与信号量
  18. 分布式GK Summary算法
  19. 【资源分享】少女爱上姐姐汉化版游戏下载,附图文攻略
  20. 漫漫D3路----W3C+CSS+JS

热门文章

  1. day5有效字母得移位两个数组的交集快乐数两个数之和
  2. 力扣 6009. 使两字符串互为字母异位词的最少步骤数
  3. 用python实现判断9*9数独的正确性
  4. 我的世界Scratch版
  5. 原来等待我做的事情还有很多
  6. 沉痛悼念游戏开发技术专家毛星云(网名“浅墨”)
  7. MBTI16型人格测试思维导图 | 找到自己的类型
  8. springBoot整合mybatis步骤
  9. 一个编程A白的真实独白
  10. 9月编程排行榜新鲜出炉霸榜还得是它~