[Android]-SDK QQ微信登入
在Unity中接入大量SDK,对一个零Android开发基础的人来说还是比较蛋疼的.在网上搜了一大堆资料,总算折腾出一个能用的QQ&微信登入SDK.
在QQ互联和微信开放平台注册,并申请相关权限后,可拿到指定AppID和AppSecret.有了这些东西才能让接入SDK正常运行.
QQ登入
先将官方的SDK,jar包导入项目.
再在onCreate中创建Tencent类实例..
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i("MainActivity", "---->>onCreate");mInstance = this;mTencent = Tencent.createInstance(AppConst.AppID_QQ, this.getApplicationContext());mWXapi = WXEntryActivity.initWeiXin(this, AppConst.AppID_WX);initOkHttp();
}
重写指定listener和onActivityResult..
//QQ登入
public void LoginQQ() {ShowToast("LoginQQ 调用");mTencent.logout(this);if (!mTencent.isSessionValid()) {ShowToast("LoginQQ 客户端访问");mTencent.login(this, "all", loginListener);isServerSideLogin = false;}
}//QQ登出
public void LogoutQQ() {mTencent.logout(this);
}private class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object response) {if (null == response) {ShowToast("登录失败");return;}JSONObject jsonResponse = (JSONObject) response;if (null != jsonResponse && jsonResponse.length() == 0) {ShowToast("登录失败");return;}ShowToast("登录成功 : " + response);doComplete((JSONObject) response);}protected void doComplete(JSONObject values) {}@Overridepublic void onError(UiError e) {ShowToast("QQ 登入异常");}@Overridepublic void onCancel() {ShowToast("QQ 登入取消");}
}IUiListener loginListener = new BaseUiListener() {@Overrideprotected void doComplete(JSONObject values) {ShowToast("QQ 登入返回数据 :" + values);try {String token = values.getString(Constants.PARAM_ACCESS_TOKEN);String expires = values.getString(Constants.PARAM_EXPIRES_IN);String openId = values.getString(Constants.PARAM_OPEN_ID);if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)&& !TextUtils.isEmpty(openId)) {mTencent.setAccessToken(token, expires);mTencent.setOpenId(openId);UnityPlayer.UnitySendMessage(AppConst.gameObject, AppConst.loginCallBack, openId);}} catch (Exception e) {}}
};@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {Log.i("Tencent", "-->onActivityResult " + requestCode + " resultCode=" + resultCode);if (requestCode == Constants.REQUEST_LOGIN ||requestCode == Constants.REQUEST_APPBAR) {Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);}super.onActivityResult(requestCode, resultCode, data);
}
微信登入
先将官方的SDK,jar包和okhttp框架的jar包导入项目.
再在onCreate中初始化IWXAPI类和okhttp(http框架).
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i("MainActivity", "---->>onCreate");mInstance = this;mTencent = Tencent.createInstance(AppConst.AppID_QQ, this.getApplicationContext());mWXapi = WXEntryActivity.initWeiXin(this, AppConst.AppID_WX);initOkHttp();
}
//封装okhttp框架的初始化配置
private void initOkHttp() {HttpsUtils.SSLParams sslParams = HttpsUtils.getSslSocketFactory(null, null, null);CookieJarImpl cookieJar = new CookieJarImpl(new PersistentCookieStore(getApplicationContext()));OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new LoggerInterceptor("TAG")).cookieJar(cookieJar).connectTimeout(20000L, TimeUnit.MILLISECONDS).readTimeout(20000L, TimeUnit.MILLISECONDS).writeTimeout(20000L, TimeUnit.MILLISECONDS).sslSocketFactory(sslParams.sSLSocketFactory, sslParams.trustManager)//其他配置.build();OkHttpUtils.initClient(okHttpClient);
}
微信SDK的接入,需要在wxapi文件夹中放入WXEntryActivity类,这是硬性要求.
WXEntryActivity类需要实现IWXAPIEventHandler和Activity.主要实现如下.
private static final String TAG = "WXEntryActivity";public static WeChatCode mWeChatCode;public static WXEntryActivity mInstance;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.i(TAG, "-->> onCreate");mInstance = this;try {MainActivity.mWXapi.handleIntent(getIntent(), this);} catch (Exception e) {e.printStackTrace();}}//微信组件注册初始化public static IWXAPI initWeiXin(Context context, String appId) {Log.i(TAG, "-->> initWeiXin");if (TextUtils.isEmpty(appId)) {Toast.makeText(context.getApplicationContext(), "app_id 不能为空", Toast.LENGTH_SHORT).show();}IWXAPI api = WXAPIFactory.createWXAPI(context, appId, true);api.registerApp(appId);return api;}// 登录微信public static void loginWeixin(Context context, IWXAPI api, WeChatCode wechatCode) {Log.i(TAG, "-->> loginWeiXin");mWeChatCode = wechatCode;// 发送授权登录信息,来获取codeSendAuth.Req req = new SendAuth.Req();// 应用的作用域,获取个人信息req.scope = "snsapi_userinfo";req.state = "login_state";api.sendReq(req);}// 微信发送请求到第三方应用时,会回调到该方法@Overridepublic void onReq(BaseReq req) {}// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法@Overridepublic void onResp(BaseResp resp) {switch (resp.errCode) {// 发送成功case BaseResp.ErrCode.ERR_OK:MainActivity.mInstance.ShowToast("第一步:请求CODE 成功");// 获取codeString code = ((SendAuth.Resp) resp).code;mWeChatCode.getResponse(code);break;case BaseResp.ErrCode.ERR_USER_CANCEL:MainActivity.mInstance.ShowToast("onResp ERR_USER_CANCEL");//发送取消finish();break;case BaseResp.ErrCode.ERR_AUTH_DENIED:MainActivity.mInstance.ShowToast("onResp ERR_AUTH_DENIED");//发送被拒绝break;default:MainActivity.mInstance.ShowToast("onResp default errCode " + resp.errCode);//发送返回break;}}/*** 返回code的回调接口*/public interface WeChatCode {void getResponse(String code);}
通讯数据使用的是json格式.所以这里还需要为指定数据生成json数据类.关于json数据类的生成,网上有现成的在线生成工具.
这里还有一个WXApi类实现,具体逻辑看Demo
AndroidManifest.xml配置文件中添加
<!-- QQ 登入 --><activity
android: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="tencent 你的AppID" /></intent-filter></activity><activity android:name="com.tencent.connect.common.AssistActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="orientation|keyboardHidden|screenSize"/><!-- 微信登入 --><activity
android:name=".wxapi.WXEntryActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait" />
QQ SDK具体接入流程以及注意事项可查看http://wiki.connect.qq.com/
微信 SDK具体接入流程以及注意事项可查看
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN
在线生成工具类链接http://tool.chinaz.com/tools/json2entity.aspx
源码分享链接https://github.com/B-CK/QQ-WXLoginSDK
[Android]-SDK QQ微信登入相关推荐
- 微信小程序之微信登入
以下代码基于uni-app编写 如果没有appid,那么uni-login是受限制的 https://open.weixin.qq.com/ 认证商户() 微信登入 不同的应用对于微信登入会做不同的处 ...
- 4.微信登入小程序与后端实现
微信登入小程序与后端实现 **需求:**实现小程序端实现登入以后,后端实现登入状态 小程序端 app.js App({onLaunch: function () {// 展示本地存储能力001bHJ2 ...
- python代码练习,微信登入并生成头像大图
import itchat import os from math import sqrt from PIL import Image import shutilpwd = os.getcwd() # ...
- 帝国cms插件支持7.0/7.2 7.5/UTF-8 微信登入插件 一键登入
简介: 这款微信登入插件,快快拿去用吧,非常方便,傻瓜式设置. 安装非常简单!新手也能懂! 网盘下载地址: http://kekewangLuo.cc/okQMSxm8a8m0 图片: 安装使用方法: ...
- php网站 qq登陆,PHP QQ一键登入网站实现过程
qq一键登入功能对于大多数小中型网站来说是十分必要的,因为他给你的用户带来了极大的方便,但是想要集成网站的qq一键登入功能,你必须要一些编程基础,使网站和qq登入的应用之间进行一些必要的交互,下面我简 ...
- QQ授权登入(Android SDK3.1)
SDK下载 (最新3.1):http://connect.qq.com/intro/login 1.自己创建应用 首先我们打开腾讯开发平台这个网页,点击-->移动应用-->创建应用,成功创 ...
- qq一键登入帝国cms插件|适用7.5 7.2版本|UTF-8 GBK双版本
简介: 帝国CMS啥插件都有,这款QQ登入插件,快快拿去用吧,非常方便,傻瓜式设置. 网盘下载地址: http://kekewangLuo.cc/81N8Y2qFUcd0 安装插件: 1.将" ...
- android微信支付黑屏,Android 調用微信登陸、支付、分享,出現的白屏、黑屏、閃屏問題。...
當我在去調用微信的登錄界面,或者其他支付界面,WXEntryActivity又一個界面,這樣看起來很不協調(WXEntryActivity類finish的時候會有閃屏的效果).為了讓用戶感覺只是拉起了 ...
- 用QQ邮箱登入foxmail出现问题
如果你的qq邮箱无法登入foxmail时,而且总是显示你的密码或邮箱有误并且你确定没错时.那么很有可能是你的qq邮箱没有开启pop3/smtp服务: 以下是开通流程: 打开你的qq邮箱,进入首页,然后 ...
最新文章
- mac mysql 连接超时时间设置_MAC下mysql安装连接问题
- C++实现有序表折半查找
- php 赋值 递增,PHP 基础(赋值及函数)
- 【2016年第4期】大数据时代的简约计算
- 概述造船业ERP信息化的方法
- python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)...
- ajax 清洗剂,Choice浴室清洁剂大测评!最好用的只要$3.5!这些产品最好别买...
- 计算机论文的写作方法有哪些,计算机专业论文的写作方法.ppt
- VMware Linux VDI 安装步骤
- springcloud集成sleuth
- 常用图表的用法-分布类
- 三种刷写LEDE等软路由固件的方法
- unsupported pickle protocol: 5
- 罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因
- CTF比赛(详细介绍)
- 芯片在计算机中作用是什么,逻辑芯片的作用是什么
- 西方文化寻根思潮的跨世纪演化——透视“新时代运动“
- 原生JavaScript实现连连看游戏
- 云存储字体测试(字体链接7小时有效)
- mysql/mariadb 进阶知识之表设计和查询
热门文章
- 简单2步轻松查找、免费下载国内外数据集?在OpenDataLab 真的可以
- 下载 axios.js 文件到本地
- 夯实第一超市地位 京东超市成超10大品类超50家品牌线上最大渠道
- 手风琴几排簧好_手风琴三排簧和四排簧的区别
- ecshop后台首页mysql_ecshop 添加后台页面以及设置权限
- 【保姆级教程—全网最快】一拿出手就羡煞旁人的RabbitMQ安装文档
- FRED应用:TMT MOBIE成像光谱仪的概念设计阶段杂散光分析
- 聪明的人脸识别3——Pytorch 搭建自己的Facenet人脸识别平台
- 衡量基因相对表达量的RPKM、FPKM、TPM详解
- 实验 6 文件打包与解压缩