cocos creator 实现微信登入
1、1.先说下实现微信登入的思路,我按照写demo的思路说下。
第一步,用 cocos creator创建一个场景,里面添加微信登入按钮,给按钮绑定事件,函数里面就一句代码
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity","weChatLogin","()V");
然后保存场景,构建,编译。
如果不知道怎么打包的话可以去官方文档查看。
2、用android studio 打开编译后的文件 也就是jsb-link,在这个地方,红色圈内的文件 在你用android studio导入的时候会变成其他的图标的
如果不知道怎么用AS导入项目的话 上网查下吧

3、导入之后会是这样的界面

1、这时候你会发现你的界面里的东西没有我的多,这时候你要去shareSDK官网下载sdk,如图 红圈内是要注意你要做哪种的IOS还是安卓的,我的是安卓的,点击后会弹出各个平台的SDK 你要哪种就选上


2、下载后解压 找到QuickIntegrater.jar 双击得到sample文件夹

3、看到里面的Sample的文件夹了吗?点击进去,里面的文件要全部拖到之前打开的android studio 项目界面 如图
有几个要点说明下
箭头1 是切换项目的显示状态
箭头2 是 直接将sample里的文件 拖过去 在app文件下就行了 然后要选中里面的jar包 右键 选 as libray 如图2 我这边是已经添加了 讲到里是在右键后的下面几行
箭头3 直接将 sample里的文件 拖过去 你会发现有一个文件夹名字是一样的,那你就将sample里同名的文件夹里的东西拖到那里面
箭头4 不能直接将sample里的assets文件夹直接拖过去 要新建一个文件夹main将assets放入后 在将main文件夹托过去
箭头5 点开sample里的src文件夹,将cn文件夹拖过去
最后重新点击箭头1 切换回这样的界面 如图 3



1、接下来是配置清单了 如图 将下面的代码添加到清单里
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

2、继续配置清单 1,2,3,4的代码添加到清单里
3中的mon appid 和 mobappsecret 是要自己去shareSDK官方注册申请的
大家申请后改成自己的就行了
1 --------------------------
android:name="com.mob.MobApplication"
2 ---------------------
<activity
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize">
</activity>
3-----------------------------
//你申请的mob appid 和 mobappsecret
<meta-data android:name="Mob-AppKey" android:value=" 2a992b4602843"/>
<meta-data android:name="Mob-AppSecret" android:value="e083b62ace8617539724d02b75214a1f"/>
4-----------
//微信回调的配置
<activity
android:name="cn.sharesdk.demo.wxapi.WXEntryActivity"
android:theme ="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboard|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"/>

3、5.在shareSDK.xml里修改微信的appid 和appsecret
Id="4"
SortId="4"
AppId="wxc43c2c004120810f"
AppSecret="96306e148dc901d44fedb897566f7a6d"
UserName="gh_b0c6a9ca668a"
Path="pages/index/index?id=mob"
BypassApproval="true"//这个设置为true那么会绕过微信审核
WithShareTicket = "true"
MiniprogramType = "2"
Enable="true" />
改后如图

1、6.在AppActivity里添加代码 如图

2、继续添加 如图 不过要主要红色部分可以不用复制进去,那只是我要切换场景 你只有一个场景的话就不用复制了
复制后如果代码是红色的话 把鼠标到上面 alt +enter 可以导入相关的包 这样就不会报错了
public static void weChatLogin(){ //判断是否存在授权凭条的客户端 if(!weChat.isClientValid()) { //更新安卓端的UI界面必须要调用runOnUiTread()的方法 pAppActivity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(pAppActivity,"微信客户端不存在,请先下载",Toast.LENGTH_SHORT).show(); } }); return; } //判断是否已经存在授权状态 if(weChat.isAuthValid()){ //清理授权缓存 // weChat.removeAccount(true); //微信用户已经授权 抛出提示 pAppActivity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(pAppActivity,"用户已经授权过了",Toast.LENGTH_SHORT).show(); } }); //切换场景 //java调用js端的代码 // 一定要在 GL 线程中执行 pAppActivity.runOnGLThread(new Runnable() { @Override public void run() { Cocos2dxJavascriptJavaBridge.evalString("cc.director.loadScene('hall_scene');"); } }); return; } //微信登入回调 weChat.setPlatformActionListener(new PlatformActionListener() { @Override//登入成功 public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { //获得全部的授权信息 //weChatData = platform.getDb().exportData(); //登入成功后抛出用户名字 weChatData = platform.getDb().getUserName(); pAppActivity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(pAppActivity,"授权信息:"+weChatData,Toast.LENGTH_SHORT).show(); } }); //切换场景 //java调用js端的代码 // 一定要在 GL 线程中执行 pAppActivity.runOnGLThread(new Runnable() { @Override public void run() { Cocos2dxJavascriptJavaBridge.evalString("cc.director.loadScene('hall_scene');"); } }); } @Override//登入失败 public void onError(Platform platform, int i, Throwable throwable) { Log.e("=====", "onError: "); } @Override//取消登入 public void onCancel(Platform platform, int i) { Log.e("=====", "onCancel: "); } }); weChat.SSOSetting(false);//是否微信客户端授权,false 默认客户端授权 weChat.showUser(null);//要数据不要功能 即 不需要用户注册}

3、由于微信登入要打包 需要 签名 我用的是shareSDK官方的DEMO里的
//appId "wx4868b35061f87885"
// appSecret "64020361b8ec4c99936c0e3999a9f249"
//包名 cn.sharesdk.demo
//mon appid 和 mobappsecret 要去shareSDK官方申请
// 大家参考看shareSDK微信分享的步骤 具体不明白的 可以问他们家客服
