美文网首页
Unity插件(三) ------ shareSDK微信登录

Unity插件(三) ------ shareSDK微信登录

作者: 千喜Ya | 来源:发表于2019-07-08 20:39 被阅读0次

    官网教程 : http://wiki.mob.com/unity3d快速集成指南/

    一.下载eclipse打包DemoCallback.jar

    微信登录Android端需要修改报名重新打jar包,但是一小时了,客服压根没人回,我只好自力更生下载Eclipse自己打包
    官方教程网址 : http://bbs.mob.com/thread-23519-1-1.html

    1.下载并安装Eclipse

    新版的eclipse好像没有带环境,嗯对于我这种不熟的人当然下载集成环境的比较好
    下载路径为 : http://tools.android-studio.org

    2.下载Java项目

    demo下载地址 : https://github.com/MobClub/New-Unity-For-ShareSDK
    这里我是用sourcetree拉取的,结果有点坑,要切换到master分支才是正确的SDK,我说我怎么把UnityPackage导进去连APPKey都没有,不过一般都是直接下载吧,应该不会遇到这个问题

    3.打开项目解决错误

    Unable to resolve target 'android-16'

    4.更改apshare,wxapi和yxapi的位置改成自己的包名

    首先新建Package ,更改成自己包名.apshare,wxapi和yxapi:



    然后移文件过去 :


    5.按照官方教程打包jar

    二.修改unity配置信息

    ①.修改AndroidManifest包名





    ②.修改PlayerSettings - Other Setting - Package Name

    三.修改ShareSDK配置信息

    ①.修改ShareSDKDevInfo.cs
    因为这里只用到了微信登录,因此我注视了其他的回调,不然ShareSDK.cs那里一长串得配置
    ②.修改ShareSDK.cs(已挂在GameObject上)


    四.微信登录代码

    WeChatLogin.cs :

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using AFramework;
    using cn.sharesdk.unity3d;
    using LitJson;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class WeChatLogin : MonoBehaviour
    {
        /// <summary>
        /// 获取到的用户信息保存本地的文件名
        /// </summary>
        private string fileName;
        /// <summary>
        /// 获取到用户的头像保存到本地的文件名
        /// </summary>
        private string iconName;
        /// <summary>
        /// SDK
        /// </summary>
        public ShareSDK ssdk;
    
        /// <summary>
        /// 微信登录
        /// </summary>
        public void WeiXinButtonHandle()
        {
            Debug.Log("点击了微信登录");
            fileName = "/wechat.json";
            iconName = "/wechatIcon.jpg";
            if (File.Exists(Application.persistentDataPath + fileName))
            {
                text.text = "已经授权:" + System.Text.Encoding.UTF8.GetString
                    (File.ReadAllBytes(Application.persistentDataPath + fileName));
                return;
            }
            ssdk.authHandler = AuthHandler;
            ssdk.Authorize(PlatformType.WeChat);
        }
    
        public Text text;
        public Text userName;
    
        /// <summary>
        /// 登录回调
        /// </summary>
        /// <param name="reqID"></param>
        /// <param name="state"></param>
        /// <param name="type"></param>
        /// <param name="data"></param>
        public  void AuthHandler(int reqID, ResponseState state, PlatformType type, Hashtable data)
        {
            Debug.Log("回调函数");
            if (state == ResponseState.Success)
            {
                JsonData userData = JsonMapper.ToObject(JsonMapper.ToJson(data));
                SaveUserInfo(JsonMapper.ToJson(data));
                string icon = userData["icon"].ToString();
                StartCoroutine(DownUserIcon(icon));
                text.text += "\n userid : " + userData["userID"] + "\n username : " + userData["nickname"] + "\n icon : " + userData["icon"];
                text.text += "\n授权成功!!!";
                userName.text = userData["nickname"].ToString();
    
            }
            else if (state == ResponseState.Fail)
            {
                text.text += "\n授权失败!!!";
            }
        }
        /// <summary>
        /// 将得到的用户信息保存
        /// </summary>
        /// <param name="jsonFile"></param>
        private void SaveUserInfo(string jsonFile)
        {
            if (File.Exists(Application.persistentDataPath + "/" + fileName))
                File.Delete(Application.persistentDataPath + "/" + fileName);
            FileTool.CreatFile(Application.persistentDataPath + "/" + fileName, System.Text.Encoding.UTF8.GetBytes
                (jsonFile));
        }
        /// <summary>
        /// 将用户的头像下载
        /// </summary>
        /// <param name="icon"></param>
        /// <returns></returns>
        private IEnumerator DownUserIcon(string icon)
        {
            Debug.Log("开启协程进行资源下载");
            WWW www = new WWW(icon);
            yield return www;
            FileStream stream = File.Create(Application.persistentDataPath + iconName);
            Texture2D texture = new Texture2D(www.texture.width, www.texture.height);
            www.LoadImageIntoTexture(texture);
            byte[] bytes = texture.EncodeToJPG();
            stream.Write(bytes, 0, bytes.Length);
            stream.Close();
            stream.Dispose();
        }
    }
    

    参考链接 :
    Unity利用Share SDK实现QQ、微信及微博第三方登录及定制内容分享(附代码)

    相关文章

      网友评论

          本文标题:Unity插件(三) ------ shareSDK微信登录

          本文链接:https://www.haomeiwen.com/subject/mimehctx.html