一、项目介绍

本案例是基于不继承UnityPlayerActivity的Java类,所以不会与已经存在的其他sdk冲突

注:如果是新手,请查看我的其他博客学习如歌创建一个自己的AndroidStudio项目

二、导入并引用微信官方登录sdk的jar包与Unity的classes.jar包

三、在包目录下新建Package,名字为wxapi,此名字不可修改,必须写死

四、新建WxEntryActivity类用于接收登录回调

package com.xxx.xxx.wxapi;import android.app.Activity;
import android.os.Bundle;
import android.view.WindowManager;import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.unity3d.player.UnityPlayer;public class WXEntryActivity extends Activity implements IWXAPIEventHandler {//微信public IWXAPI wxApi;public static final String AppId = "wxa2ee6175924e21fc";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 隐藏状态栏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);wxApi = WXAPIFactory.createWXAPI(this, AppId,true);wxApi.registerApp(AppId);try{boolean handleIntent = wxApi.handleIntent(getIntent(), this);if(!handleIntent){System.out.println("参数不合法");}}catch(Exception e){e.printStackTrace();}}@Overridepublic void onReq(BaseReq baseReq) {}@Overridepublic void onResp(BaseResp baseResp) {if (baseResp.getType() == ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX) {//分享} else if (baseResp.getType() == ConstantsAPI.COMMAND_SENDAUTH) {//登陆发送广播switch (baseResp.errCode) {case BaseResp.ErrCode.ERR_OK:SendAuth.Resp newResp = (SendAuth.Resp) baseResp;String code = newResp.code;UnityPlayer.UnitySendMessage("NetLogic", "CallbackWxLogin", code);break;case BaseResp.ErrCode.ERR_AUTH_DENIED:UnityPlayer.UnitySendMessage("NetLogic", "CallbackWxLogin", "-1");;break;case BaseResp.ErrCode.ERR_USER_CANCEL:UnityPlayer.UnitySendMessage("NetLogic", "CallbackWxLogin", "0");;break;}}finish();}
}

五、新建单利Java类用来给Unity调用

package com.xxx.xxx;//自己的包名称
import android.content.Context;
import android.util.Log;import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;public class ClientWeiXinActivity {private static final String App_Id = "xxxxxx";//自己的appIdpublic static ClientWeiXinActivity _instance;IWXAPI msgApi;public static ClientWeiXinActivity getInstance() {if (_instance == null) {_instance = new ClientWeiXinActivity();}return _instance;}public void WxSdkLogin(Context res,String scope,String state) {msgApi = WXAPIFactory.createWXAPI(res, App_Id,false);if (!msgApi.isWXAppInstalled()) return;msgApi.registerApp(App_Id);SendAuth.Req req = new SendAuth.Req();req.scope = scope;req.state = state;Log.d("Debug", "发起用户授权");msgApi.sendReq(req);}}

六、代码逻辑

客户端调用微信的安卓sdk拉起登录授权页面,用户点击授权后,向服务器端发送微信回调的code参数,将code传给服务器,通过服务器获取授权后的用户信息

七、发布arr包到自己的项目中

Unity代码

    public void WxSdkLogin(){
#if UNITY_ANDROID && !UNITY_EDITORAndroidJavaClass jc = new AndroidJavaClass("com.xxx.xxx.ClientWeiXinActivity");//包名+Java类名AndroidJavaObject m_Android = jc.CallStatic<AndroidJavaObject>("getInstance");if (m_Android != null){m_Android.Call("WxSdkLogin",m_AndroidPluginObj,"snsapi_userinfo" ,"frwfrwsdxefe");}elseDebug.Log("AndroidPlugin is Null");
#endif}public void CallbackWxLogin(string code){Debug.Log("微信登录回调:" + code);if (code == "0" || code == "-1") return;}

Unity3D接入第三方插件之微信登录安卓SDK相关推荐

  1. 微信小程序接入第三方插件腾讯位置服务地图选点

    微信小程序接入第三方插件腾讯位置服务地图选点 1.在小程序服务平台中添加"腾讯位置服务地图选点"插件 1.在小程序服务平台中添加"腾讯位置服务地图选点"插件 微 ...

  2. 集成友盟第三方实现QQ微信登录遇到的坑

    最近项目集成友盟第三方实现QQ微信登录,在集成实现过程中遇到了一些问题,也对这些问题提出一些自己的解决办法: 集成的过程不就提了,直接上问题: 一.微信登录提示"授权失败,请查看log&qu ...

  3. 第三方相关 — Android微信登录

    1,首先在微信开放平台上注册应用,填写相关信息,获取appid 2,把固定参数配置搭配到常量文件或gradle中 buildConfigField "String","W ...

  4. 微信公众号接入第三方服务器,设置自动回复、关键回复、自定义菜单,配置及开发流程

    首先需要确认一点,一旦接入第三方服务器,微信就认为你已经具备了开发能力,像自动回复.关键词回复.自定义菜单这些功能,微信公众平台就不再提供了(需要开发者调用相关接口),停用服务器之后,这些功能也就恢复 ...

  5. 微信公众号接入第三方服务器,设置自动回复、关键回复、自定义菜单,配置及开发流程...

    首先需要确认一点,一旦接入第三方服务器,微信就认为你已经具备了开发能力,像自动回复.关键词回复.自定义菜单这些功能,微信公众平台就不再提供了(需要开发者调用相关接口),停用服务器之后,这些功能也就恢复 ...

  6. WordPress登陆插件Erphplogin Pro QQ登陆/微博/微信登录/弹窗登录

    简介: Erphplogin Pro是一款由模板兔开发的wordpress网站用户通过QQ.微博.微信扫码以及弹窗来进行登录的wordpress中文插件.微信登录的接口是微信开发者平台的接口,扫码登录 ...

  7. web端第三方微信登录

    最近接触了下微信登录,抽出空写下这次做微信登录的整个过程吧(包括自己遇到的坑),当做笔记记录下 我所做的是第三方网站的微信登录,(也就是呢,用户通过扫描我们系统登录页面的微信二维码授权后登录到我们系统 ...

  8. Erphplogin Pro 连接QQ/微博/微信登录/弹窗登录 WordPress插件

    Erphplogin Pro是一款由模板兔开发的wordpress网站用户通过QQ.微博.微信扫码以及弹窗来进行登录的wordpress中文插件.微信登录的接口是微信开发者平台的接口,扫码登录. 本插 ...

  9. 在哪里能收到python实例代码-python实现网站微信登录的示例代码

    最近微信登录开放公测,为了方便微信用户使用,我们的产品也决定加上微信登录功能,然后就有了这篇笔记. 根据需求选择相应的登录方式 python实现网站微信登录的示例代码 微信现在提供两种登录接入方式 移 ...

最新文章

  1. 审稿人眼中的好论文到底长什么样?
  2. 单例模式的3种实现方式, 及其性能对比
  3. Win7 64位系统,PHP 扩展 curl方法
  4. Spark编程指引(四)----共享变量(广播变量和累加器)
  5. 光纤收发器的实际应用范围介绍
  6. 第 11 章 日志管理 - 089 - 初探 ELK
  7. 安装Redis常见问题
  8. 鸿蒙系统下载 绿色,PGWARE PcMedik
  9. freelance平台_完整的Freelance Web开发人员指南:如何通过Freelance编程工作来赚钱
  10. DataGrid中的超级链接列使用注意点
  11. Enterprise Library 1.0
  12. python批量打印word文件
  13. python热身教程_[转载]技术教程-MayaPython教程二之Python
  14. OTN技术及华为OTN设备简介
  15. 机器学习 | AHP层次分析法
  16. SVN更新操作提示需要清理操作,清理操作提示乱码,更新SVN失败【解决方案】
  17. liunx系统下搭建domian
  18. 支撑 100Gbit/s K8s 集群的未来网络数据平面
  19. 修改嵌入式linux驱动支持不同的LCD
  20. JavaScript html 图片滑动切换效果,幻灯片式切换,新闻展示,滚动新闻

热门文章

  1. cf网络不稳定或服务器异常,电脑玩穿越火线为什么提示网络环境异常 - 卡饭网...
  2. 火车头如何下载附件文件
  3. java8通讯_8.进程通信
  4. SitePoint Podcast#181:解决比创建更多的问题
  5. Titanic 泰坦尼克号预测-Tensorflow 方法-【Kaggle 比赛】
  6. 7个可以改变一生的自学网站,每天3小时,效果直线上升!
  7. 达梦出席湖北银行业金融机构信息科技风险管理研讨会
  8. Ubuntu 18.04 LTS 安装JDK1.8-Linux-64
  9. 【Security】操作系统安全
  10. udpping检测与对端udp协议通信状况