在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微信登入相关推荐

  1. 微信小程序之微信登入

    以下代码基于uni-app编写 如果没有appid,那么uni-login是受限制的 https://open.weixin.qq.com/ 认证商户() 微信登入 不同的应用对于微信登入会做不同的处 ...

  2. 4.微信登入小程序与后端实现

    微信登入小程序与后端实现 **需求:**实现小程序端实现登入以后,后端实现登入状态 小程序端 app.js App({onLaunch: function () {// 展示本地存储能力001bHJ2 ...

  3. python代码练习,微信登入并生成头像大图

    import itchat import os from math import sqrt from PIL import Image import shutilpwd = os.getcwd() # ...

  4. 帝国cms插件支持7.0/7.2 7.5/UTF-8 微信登入插件 一键登入

    简介: 这款微信登入插件,快快拿去用吧,非常方便,傻瓜式设置. 安装非常简单!新手也能懂! 网盘下载地址: http://kekewangLuo.cc/okQMSxm8a8m0 图片: 安装使用方法: ...

  5. php网站 qq登陆,PHP QQ一键登入网站实现过程

    qq一键登入功能对于大多数小中型网站来说是十分必要的,因为他给你的用户带来了极大的方便,但是想要集成网站的qq一键登入功能,你必须要一些编程基础,使网站和qq登入的应用之间进行一些必要的交互,下面我简 ...

  6. QQ授权登入(Android SDK3.1)

    SDK下载 (最新3.1):http://connect.qq.com/intro/login 1.自己创建应用 首先我们打开腾讯开发平台这个网页,点击-->移动应用-->创建应用,成功创 ...

  7. qq一键登入帝国cms插件|适用7.5 7.2版本|UTF-8 GBK双版本

    简介: 帝国CMS啥插件都有,这款QQ登入插件,快快拿去用吧,非常方便,傻瓜式设置. 网盘下载地址: http://kekewangLuo.cc/81N8Y2qFUcd0 安装插件: 1.将" ...

  8. android微信支付黑屏,Android 調用微信登陸、支付、分享,出現的白屏、黑屏、閃屏問題。...

    當我在去調用微信的登錄界面,或者其他支付界面,WXEntryActivity又一個界面,這樣看起來很不協調(WXEntryActivity類finish的時候會有閃屏的效果).為了讓用戶感覺只是拉起了 ...

  9. 用QQ邮箱登入foxmail出现问题

    如果你的qq邮箱无法登入foxmail时,而且总是显示你的密码或邮箱有误并且你确定没错时.那么很有可能是你的qq邮箱没有开启pop3/smtp服务: 以下是开通流程: 打开你的qq邮箱,进入首页,然后 ...

最新文章

  1. mac mysql 连接超时时间设置_MAC下mysql安装连接问题
  2. C++实现有序表折半查找
  3. php 赋值 递增,PHP 基础(赋值及函数)
  4. 【2016年第4期】大数据时代的简约计算
  5. 概述造船业ERP信息化的方法
  6. python接口自动化(三十二)--Python发送邮件(常见四种邮件内容)番外篇——上(详解)...
  7. ajax 清洗剂,Choice浴室清洁剂大测评!最好用的只要$3.5!这些产品最好别买...
  8. 计算机论文的写作方法有哪些,计算机专业论文的写作方法.ppt
  9. VMware Linux VDI 安装步骤
  10. springcloud集成sleuth
  11. 常用图表的用法-分布类
  12. 三种刷写LEDE等软路由固件的方法
  13. unsupported pickle protocol: 5
  14. 罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因
  15. CTF比赛(详细介绍)
  16. 芯片在计算机中作用是什么,逻辑芯片的作用是什么
  17. 西方文化寻根思潮的跨世纪演化——透视“新时代运动“
  18. 原生JavaScript实现连连看游戏
  19. 云存储字体测试(字体链接7小时有效)
  20. mysql/mariadb 进阶知识之表设计和查询

热门文章

  1. 简单2步轻松查找、免费下载国内外数据集?在OpenDataLab 真的可以
  2. 下载 axios.js 文件到本地
  3. 夯实第一超市地位 京东超市成超10大品类超50家品牌线上最大渠道
  4. 手风琴几排簧好_手风琴三排簧和四排簧的区别
  5. ecshop后台首页mysql_ecshop 添加后台页面以及设置权限
  6. 【保姆级教程—全网最快】一拿出手就羡煞旁人的RabbitMQ安装文档
  7. FRED应用:TMT MOBIE成像光谱仪的概念设计阶段杂散光分析
  8. 聪明的人脸识别3——Pytorch 搭建自己的Facenet人脸识别平台
  9. 衡量基因相对表达量的RPKM、FPKM、TPM详解
  10. 实验 6 文件打包与解压缩