欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

微信授权openID和token获取,简单六步搞定 --Unity开发笔记

程序员文章站 2022-07-10 22:11:43
第一步 我们需要将Unity导出android studio 工程第二步 找到UnityPlayerActivity所在的文件夹新建文件夹 wxapi新建java文件 WXEntryActivity这里 WXEntryActivity 的代码 全部覆盖就好了 不用修改package com.casual.farm.fun.leisure.wxapi;import android.app.Activity;import android.content.Intent;import...

第一步 我们需要将Unity导出android studio 工程
微信授权openID和token获取,简单六步搞定 --Unity开发笔记


第二步 找到UnityPlayerActivity所在的文件夹
新建文件夹 wxapi
新建java文件 WXEntryActivity
微信授权openID和token获取,简单六步搞定 --Unity开发笔记
这里 WXEntryActivity 的代码 全部覆盖就好了 不用修改

package com.casual.farm.fun.leisure.wxapi;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import com.casual.farm.fun.leisure.UnityPlayerActivity;
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 {


    ///通知Unity哪个物体GameObjectName  哪个方法CallBackFuncName
    public static String GameObjectName = "";//GameObjectName 的 WXPayCallback方法
    public static String CallBackFuncName = "";//
    //监听支付回调的对象
    private IWXAPI api;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //创建微信API对象
        api = WXAPIFactory.createWXAPI(this, UnityPlayerActivity.APP_ID,false);

        //把接受到的Intent给wxapi这个对象,它会解析回调结果,通过我们实现的IWXAPIEventHandler接口回调给我们
        api.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }


    // 微信发送请求到第三方应用时,会回调到该方法
    @Override
    public void onReq(BaseReq req) {
        switch (req.getType()) {
            case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
                break;
            case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
                break;
            case ConstantsAPI.COMMAND_LAUNCH_BY_WX:
                break;
            default:
                break;
        }
    }

    // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
    @Override
    public void onResp(BaseResp resp) {
        System.out.println("$$$$$$$$$$$$unity_2_android微信响应");
        switch (resp.errCode){
            case BaseResp.ErrCode.ERR_OK:
                //用户同意
                //SendAuth.Resp authResp = (SendAuth.Resp) resp;
                String code = ((SendAuth.Resp) resp).code;
                UnityPlayer.UnitySendMessage(GameObjectName,CallBackFuncName, "1,"+code);
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                //用户拒绝
                UnityPlayer.UnitySendMessage(GameObjectName,CallBackFuncName, "0,ERR_AUTH_DENIED");
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                //用户取消
                UnityPlayer.UnitySendMessage(GameObjectName,CallBackFuncName, "0,ERR_USER_CANCEL");
                break;
        }

        finish();
    }


}


第三步 来到 AndroidManifest.xml 文件里 我们将新建的 WXEntryActivity 加入启动配置

微信授权openID和token获取,简单六步搞定 --Unity开发笔记
代码可拷贝区

  <!-- for mta statistics, not necessary-->
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

微信授权openID和token获取,简单六步搞定 --Unity开发笔记

代码
xxx 部分 自己填写自己的包名

<activity
        android:exported="true"
        android:launchMode="singleTop"
        android:name="com.xxx.xxx.xx.xxxx.wxapi.WXEntryActivity"
        android:theme="@android:style/Theme.NoDisplay" />

第四步 在 dependencies里引用微信sdk

implementation ‘com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+’

微信授权openID和token获取,简单六步搞定 --Unity开发笔记
记得勾一下同步哦 sync now
微信授权openID和token获取,简单六步搞定 --Unity开发笔记


第五步 注册方法

  1. 在 UnityPlayerActivity 文件里 找到onCreate方法里 粘贴以下代码
    在授权成功后 会调用 场景里的 IAdsMgr 对象上 脚本里的 WechatLoginCallback方法
 		//创建微信API对象
       wxApi = WXAPIFactory.createWXAPI(this,APP_ID,false);
       //Unity里接收授权回调的对象
        WXEntryActivity.GameObjectName = "IAdsMgr"; 
        //Unity接收授权对象的 回调方法 
        WXEntryActivity.CallBackFuncName = "WechatLoginCallback";
      

在 UnityPlayerActivity 类里 写一个方法 由Unity脚本来调用

微信授权openID和token获取,简单六步搞定 --Unity开发笔记
代码如下

 //登陆
    public void WechatLogin(){
        final SendAuth.Req req = new SendAuth.Req();
        req.scope = "snsapi_userinfo";
        req.state = "wechat_sdk_demo_test";
        wxApi.sendReq(req);
    }

Unity 如何调用
不用做修改 直接粘贴到一个脚本里 报错的话 记得引用头文件

public static AndroidJavaObject jo;
    //微信授权
    public static void WechatMandate()
    {
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("WechatLogin");
    }

微信授权openID和token获取,简单六步搞定 --Unity开发笔记

大工告成

本文地址:https://blog.csdn.net/qq_39162566/article/details/112566325