首先说明,本人纯新手,不动Android也不懂iOS,作为一个这样的新手,在Unity里面实现微信登录真是费了不少劲,好在ShareSDK给集成了很多东西,就这样还是走了很多很多的弯路,为了避免后面的同学再次走弯路,我决定写下这篇博客记录下详细过程!

第一步:去微信开放平台申请你的应用

地址:http://open.weixin.qq.com/

创建移动应用等待审核,然后注册成为开发者,此步骤我不在细讲,这个很简单申请成功之后是这样的:

会提示你已通过,记下AppID和AppSecret这两个,以后会用到,当然你想要实现分享和登录功能需要再次申请开通接口

下面会有包名和签名

记下包名,以后也会用到。

第二步:接入ShareSDK

先去ShareSDK注册一下获取你的ShareSDK中的AppID

官网:http://www.mob.com/

注册成功之后点击进入后台

然后点击这个你就会看见这个ShareSDK点进去然后概况下面有App Key

记下这个App Key后面也会用到

然后下载Demo体验包,包我会在下面提供下载地址,避免大家走弯路

下载完之后是一个压缩文件:

文件结构是一个Unity工程和一个apk安装包

解压之后用Unity打开这个Unity工程

选择你刚才解压的路径打开这个工程

如果版本不符的话点下Continue就可以了,但不建议使用5.3.5以下的版本,因为有可能会出现意想不到的bug

打开之后是QQ登录和QQ分享,不要急往下看

接下来该修改你的东西了首先点下Main Camera看脚本

有个ShareSDK的脚本,着重看四个地方

1:AppKey

2:WeChat AppID

3:wechat AppSecret

4:BypassApproval

上面说的4个地方都是需要改的

第一处:改成你的SheraSDK的App Key刚才记下的

第二处:改成刚才记下的微信AppID

第三处:改成刚才记下的微信AppSecret

第四处:BypassApproval这个按钮点一下 处于不激活状态

上面四个地方改过之后就要修改脚本了

打开SheraDemo脚本修改由于不能贴太多图片我直接上代码,可直接替换!

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using cn.sharesdk.unity3d; //导入ShareSdkpublic class ShareDemo : MonoBehaviour {private ShareSDK shareSdk;public  Text message;void Start () {shareSdk = GetComponent<ShareSDK>();//分享回调事件shareSdk.shareHandler += ShareResultHandler;//授权回调事件shareSdk.authHandler += AuthResultHandler;//用户信息事件shareSdk.showUserHandler += GetUserInfoResultHandler;}//分享public void OnShareClick(){ShareContent content = new ShareContent();//这个地方要参考不同平台需要的参数    可以看ShareSDK提供的   分享内容参数表.docxcontent.SetText("快来和我一起玩这个游戏吧!");                            //分享文字content.SetImageUrl("https://f1.webshare.mob.com/code/demo/img/4.jpg");   //分享图片content.SetTitle("标题title");                                            //分享标题content.SetTitleUrl("http://www.qq.com");content.SetSite("Mob-ShareSDK");content.SetSiteUrl("http://www.mob.com");content.SetUrl("http://www.sina.com");                                    //分享网址content.SetComment("描述");content.SetMusicUrl("http://up.mcyt.net/md5/53/OTg1NjA5OQ_Qq4329912.mp3");//分享类型为音乐时用content.SetShareType(ContentType.Webpage);//shareSdk.ShowPlatformList(null, content, 100, 100);                      //弹出分享菜单选择列表shareSdk.ShowShareContentEditor(PlatformType.WeChat, content);                 //指定平台直接分享}// 分享结果回调void ShareResultHandler (int reqID, ResponseState state, PlatformType type, Hashtable result){   //成功if (state == ResponseState.Success){message.text =("share result :");message.text = (MiniJSON.jsonEncode(result)); }//失败else if (state == ResponseState.Fail){message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);}//关闭else if (state == ResponseState.Cancel) {message.text = ("cancel !");}}//授权public void OnAuthClick(){//请求微信授权//请求这个授权是为了获取用户信息来第三方登录shareSdk.Authorize(PlatformType.WeChat);}//授权结果回调void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result){   if (state == ResponseState.Success){message.text = ("authorize success !");//授权成功的话,获取用户信息shareSdk.GetUserInfo(type);  }else if (state == ResponseState.Fail){message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);}else if (state == ResponseState.Cancel){message.text = ("cancel !");}}//获取用户信息void GetUserInfoResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result){if (state == ResponseState.Success){//获取成功的话 可以写一个类放不同平台的结构体,用PlatformType来判断,用户的Json转化成结构体,来做第三方登录。switch (type){case PlatformType.WeChat:message.text = (MiniJSON.jsonEncode(result));  //Jsonbreak;}    }else if (state == ResponseState.Fail){message.text = ("fail! error code = " + result["error_code"] + "; error msg = " + result["error_msg"]);}else if (state == ResponseState.Cancel){message.text = ("cancel !");}}
}/*//QQ用户信息结构体struct QQUser
{public string yellow_vip_level;public string msg;public string province;public string gender;public string is_yellow_year_vip;public int is_lost;public string nickname;public int ret;public string level;public string city;public string figureurl;public string figureurl_1;public string figureurl_2;public string figureurl_qq_1;public string figureurl_qq_2;public string vip;public string is_yellow_vip;
}
*/

改完之后保存这个脚本

然后打开你的Unity工程下面的Plugins\Android\ShareSDK\AndroidManifest 这个文件修改成如下样式:吧com.xxxx.xxxx换成你的包名即可

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.xxxx.xxxx"android:versionCode="2"android:versionName="2.0" ><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/><uses-permission android:name="android.permission.GET_ACCOUNTS"/><!-- 蓝牙分享所需的权限 --><uses-permission android:name="android.permission.BLUETOOTH" /><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><application><activityandroid:name="com.mob.tools.MobUIShell"android:configChanges="keyboardHidden|orientation|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:windowSoftInputMode="stateHidden|adjustResize" ><!--如果集成QQ分享,或者使用QQ客户端来进行QQ空间的分享,须要在此处添加一个对ACTION_VIEW事件的过滤器,其中的scheme是“tencent”前缀再开发者应用的加上appId。如果此过滤器不设置,则分享结束以后不能得到正确的回调--><intent-filter android:priority="1000" ><data android:scheme="tencent100371282" /><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /></intent-filter><!-- 新浪回调 --><intent-filter><action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity><!-- 微信分享回调 --><activityandroid:name="com.xxxx.xxxx.wxapi.WXEntryActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true" /><!-- 易信分享回调 --><activityandroid:name=".yxapi.YXEntryActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"android:excludeFromRecents="true"android:exported="true"android:launchMode="singleTop" />         <!-- 支付宝分享回调 --><activityandroid:name=".apshare.ShareEntryActivity"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"/></application></manifest>

这样其实已经可以了 但是保险起见打开SheraSDKDevInfo脚本修所有用中文标注的 "你的微信AppID"  和  "你的微信AppSecret"  的地方AppID和AppSecret修改后保存

using UnityEngine;
using System.Collections;
using System;namespace cn.sharesdk.unity3d
{[Serializable]public class DevInfoSet{ public WeChat wechat;  }public class DevInfo {  public bool Enable = true;}[Serializable]public class WeChat : DevInfo {   #if UNITY_ANDROIDpublic string SortId = "5";public const int type = (int) PlatformType.WeChat;public string AppId = "你的微信AppID";public string AppSecret = "你的微信AppSecret";public bool BypassApproval = true;
#elif UNITY_IPHONEpublic const int type = (int) PlatformType.WeChat;public string app_id = "你的微信AppID";public string app_secret = "你的微信AppSecret";
#endif}[Serializable]public class WeChatMoments : DevInfo {#if UNITY_ANDROIDpublic string SortId = "6";public const int type = (int) PlatformType.WeChatMoments;public string AppId = "你的微信AppID";public string AppSecret = "你的微信AppSecret";public bool BypassApproval = false;
#elif UNITY_IPHONEpublic const int type = (int) PlatformType.WeChatMoments;public string app_id = "你的微信AppID";public string app_secret = "你的微信AppSecret";
#endif}[Serializable]public class WeChatFavorites : DevInfo {#if UNITY_ANDROIDpublic string SortId = "7";public const int type = (int) PlatformType.WeChatFavorites;public string AppId = "你的微信AppID";public string AppSecret = "你的微信AppSecret";
#elif UNITY_IPHONEpublic const int type = (int) PlatformType.WeChatFavorites;public string app_id = "你的微信AppID";public string app_secret = "你的微信AppSecret";
#endif}[Serializable]public class WechatSeries : DevInfo {
#if UNITY_ANDROID//for android,please set the configuraion in class "Wechat" ,class "WechatMoments" or class "WechatFavorite"//对于安卓端,请在类Wechat,WechatMoments或WechatFavorite中配置相关信息↑
#elif UNITY_IPHONEpublic const int type = (int) PlatformType.WechatPlatform;public string app_id = "你的微信AppID";public string app_secret = "你的微信AppSecret";
#endif}
}

这一步完成就差不多大工告成了,接下来打包打成安卓包,注意修改你的包名

打包不在详细的说打出来安装到你的安卓手机上就行了点运行 分享和登录就这样完成了 GoodLuck!

Demo包下载地址:链接:http://pan.baidu.com/s/1kU51qkB 密码:zze6

Unity实现微信登录使用ShareSDK相关推荐

  1. unity接微信登录,eclipse打jar包,快速高效

    对于unity接微信登录这一块儿,其实坑还是挺多的,接微信SDK有多种方法,本人是一位unity兼java服务器开发者,文章内容纯属原创,只是将个人经验分享给大家,不喜勿喷. 1.首先,注册微信开发者 ...

  2. Unity.安卓微信支付与ShareSDK微信登陆合并

    上篇补充:先看下流程图 还需要进行箭头标记的步骤 1.成功支付后,需要在将回调的地方,将结果发给服务器,由服务器调用查询订单接口查询,以服务器的结果为准. 2.可购买的商品一般都会有自己的数据表配置, ...

  3. cocos creator利用ShareSDK实现微信登录功能

    首先在ShareSDK官网下载SDK或者在android studio中配置build.gradle. ShareSDK Maven集成文档 注:使用ShareSDK maven集成方式,不需要在An ...

  4. 关于Unity接入微信扫码登录

    关于Unity接入微信扫码登录 请联系QQ63672785 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器 ...

  5. Unity3D 唤醒微信 打开微信(非微信登录、微信分享)

    关注公众号,获取更多干货. 下面是正文: 好久没有写博客了,今天发现个好玩的东西,就动动手写几个字,哈哈. 本文并不是教大家如何做微信登录和微信分享,那是需要接SDK的. 今天的东西很鸡肋,但有时候还 ...

  6. Unity3D接入第三方插件之微信登录安卓SDK

    一.项目介绍 本案例是基于不继承UnityPlayerActivity的Java类,所以不会与已经存在的其他sdk冲突 注:如果是新手,请查看我的其他博客学习如歌创建一个自己的AndroidStudi ...

  7. 微信登录实现-Android

    微信登录的实现与qq登录类似.不过微信登录比较麻烦,需要拿到开发者资质认证,花300块钱,然后应用的话还得有官网之类的,就是比较繁琐的前期准备工作,如果在公司里,这些应该都不是事,会有相关人提前准备好 ...

  8. 如何使用 Unity制作微信小游戏,微信小游戏制作方案 最新完整详细教程来袭【持续更新】

    前言 Unity实战篇 | Unity制作微信小游戏,最新详细教程来袭[持续更新] 一.方案特点 二.技术原理 三.转换案例 四.安装与使用方法 4.1 查阅推荐的引擎版本,安装时选择WebGL组件 ...

  9. 【iOS】原生微信登录和分享

    add:新加入了block回调,详细可以看博客最后面的github地址. 年前的时候,公司说需要在APP里面做微信.新浪和QQ的第三方登录.当时,由于APP已经集成了微信支付.微信.新浪和QQ的分享S ...

  10. unity开发微信小游戏(5)- 微信好友排行榜

    效果展示: 如果感觉文章有用的,也烦请大家多多支持(扫描上面二维码n(*≧▽≦*)n)!!❤❤❤ unity开发微信好友排行榜可以说是把我虐的体无完肤,但为了拿下这功能,硬壳了三天,把我所踩过的坑分享 ...

最新文章

  1. rabbitmq 网络分区错误
  2. notepad++ 设置常用快捷键
  3. Mobile 拨打电话 发送短信
  4. android p获取通话记录_HBuilder 获取通话记录 (Android)
  5. web.xml、JSP原理、指令
  6. 大道至简第五章阅读笔记
  7. 能够提高开发效率的Eclipse实用操作
  8. C# 读写ini文件 保存信息
  9. java函数式编程 map_函数式编程-对Java 8流进行分区
  10. AI读懂两千年前文字,登上Nature封面,惊艳历史学家
  11. eclipse的简介安装与配置
  12. python time 时间差,python如何计算时间差
  13. 折半枚举(双向搜索)
  14. 【今日免费】下载19880元大数据开发从零基础到全链路全套教程(源码+视频)...
  15. Layer数据表格监听排序切换
  16. matplotlib之直方图
  17. 利用python画爱心表白
  18. 论霸道,看大秦帝国有感
  19. 微信怎样收发邮件,一款更全能的掌上邮箱,随心邮你
  20. 2048网页版html项目报告,jQuery编写网页版2048小游戏

热门文章

  1. 情商差距在NBA的体现
  2. 2021-10-17csp7连day7总结
  3. Java学习_Day 07(学习内容:尚硅谷枚举类与注解JAVA零基础P503-P512)
  4. 比较购物搜索之搜索引擎的设计——货比百家(huobibaiija.com)
  5. 头盔试验设备-头盔检测项目标准及试验设备
  6. Python字母计数
  7. 0824磅日的操作小结
  8. 判断实体的类型 相关操作
  9. LOGO怎么抄最安全?
  10. nacos-ErrMsg:failed to req API:/api//nacos/v1/ns/instance after all servers([127.0.0.1:8848]) tried