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

官网教程 : 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
{
    /// 
    /// 获取到的用户信息保存本地的文件名
    /// 
    private string fileName;
    /// 
    /// 获取到用户的头像保存到本地的文件名
    /// 
    private string iconName;
    /// 
    /// SDK
    /// 
    public ShareSDK ssdk;

    /// 
    /// 微信登录
    /// 
    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;

    /// 
    /// 登录回调
    /// 
    /// 
    /// 
    /// 
    /// 
    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授权失败!!!";
        }
    }
    /// 
    /// 将得到的用户信息保存
    /// 
    /// 
    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));
    }
    /// 
    /// 将用户的头像下载
    /// 
    /// 
    /// 
    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微信登录)